壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1507|回复: 0

Liferay中日历组件的使用(转)

[复制链接]
发表于 2010/5/13 15:48:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
10.1 Journal Portlet的例子用法
在Liferay自带的portlet中,journal是一个很好的例子。
10.1.1 JSP中的用法
在文件portal-web\docroot\html\portlet\journal\edit_article.jsp中,用法如下:
<%
Calendar displayDate = new GregorianCalendar(timeZone, locale);
if (article.getDisplayDate() != null) {
displayDate.setTime(article.getDisplayDate());
}
%>
<liferay-ui:input-field model="<%= JournalArticle.class %>" bean="<%= article %>" field="displayDate" defaultValue="<%= displayDate %>" />
这样,将会显示日期控件,具体样式可以看实际运行的例子。年月日分别显示,并且有一个日历按钮,可以弹出一个典型的日历界面。
10.1.2 生成的HTMl代码
生成的代码还挺长,主要分成以下几个部分:
1、 相应的JavaScript语句
这部分代码,一是创建一个Calendar对象,就是会弹出来的日历页面。另有两个JS函数jsOnClose和jsOnSelect。
从这段代码可以看到,如果在一个页面中有多个Date输入框,将会生成多个Calendar对象。
2、 生成年月日的HTML代码
年月日代码,在Liferay里面,是三个单独的Select框。
3、 一个弹出日历页面的图片
用了一个图片calendar.gif,单击就会显示日历页面。
4、 生成时分的HTML代码
在Liferay里面,有两个Select框,和一个AM、PM的选项框。
10.1.3 Action中获取时间的方法
因为HTML代码是将时间分成了多个Input,因此在Action里面获取时间,并不是简单的getParameter,而是要根据多个input值,生成相应的Date。
核心代码为
  int displayDateMonth = ParamUtil.getInteger(req, "displayDateMonth");
  int displayDateDay = ParamUtil.getInteger(req, "displayDateDay");
  int displayDateYear = ParamUtil.getInteger(req, "displayDateYear");
  int displayDateHour = ParamUtil.getInteger(req, "displayDateHour");
  int displayDateMinute = ParamUtil.getInteger(req, "displayDateMinute");
  int displayDateAmPm = ParamUtil.getInteger(req, "displayDateAmPm");
  if (displayDateAmPm == Calendar.PM) {
   displayDateHour += 12;
  }
  Date displayDate = PortalUtil.getDate(
   displayDateMonth, displayDateDay, displayDateYear,
   displayDateHour, displayDateMinute, user.getTimeZone(),
   new ArticleDisplayDateException());
具体可以看看PortalUtil.getDate的实现代码,就是利用GregorianCalendar生成Date对象。
10.2 源代码阅读
看到这里,可能会有一个疑问,几乎所有的input输入框,都是使用<liferay-ui:input-field>这个Taglib实现的,而且从JSP中,看不出在哪儿定义了这个input-field应该显示为日期,而不是普通的input窗口。
而这,可以通过阅读源代码来解释。具体代码为:
portal\portal-web\docroot\html\taglib\ui\input_field\page.jsp
通过阅读这段代码,可以知道,不同类型的field,将会生成不同的HTML代码,而依据就是配置文件portal-model-hints.xml和ext-model-hints.xml。这里面有Field的类型的定义。
比如,Journal里面的displayDate的定义则为:
<field name="displayDate" type="Date" />。
另外,通过源代码还可以看到,如果只是显示年月日,而不显示时分,可以设置为
  <field name=" displayDate" type="Date">
   <hint name="show-time">false</hint>
  </field>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sumongh_pan/archive/2007/03/29/1545669.aspx

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 12:08 , Processed in 0.011314 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表