Liferay中日历组件的使用
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>
分享到:
相关推荐
Liferay Portlet是一种符合Java Portlet规范的组件,它可以嵌入到Liferay Portal的页面上,提供各种功能,如新闻展示、论坛讨论、日历管理等。Portlets通过Liferay的portlet容器运行,该容器负责渲染和管理portlet的...
Portlets 是 Liferay 中的功能模块,可以是内容展示、搜索框、日历、论坛等各种Web组件。开发者可以通过编写portlet代码,实现特定业务逻辑,并将其部署到Liferay平台中。 在Liferay中,内容管理是一个关键部分。...
- **社区建设**:用户可以创建自定义社区,包含论坛、博客、日历等多种交互组件。 - **身份和访问管理**:通过LDAP、单点登录(SSO)等实现用户身份验证和授权。 - **工作流支持**:集成BPM引擎如Activiti,实现...
Liferay是一款开源的企业级门户平台,它...以上只是Liferay部分核心知识点的概述,实际使用中,还需要深入学习其配置、安全、性能调优等方面的知识。如果你对这些内容感兴趣,这个压缩包中的文档将是你宝贵的参考资料。
2. **Portlet**:Portlet是Liferay中的核心组件,它们类似于小型的Web应用,可以嵌入到门户页面中,提供各种功能,如新闻显示、日历管理、搜索等。 3. **portlet生命周期**:包括初始化、加载、渲染、动作处理和...
- **Portlets**:这是 Liferay 最主要的应用开发方式,它们是可嵌入到门户页面中的自包含组件,可以提供各种功能,如内容管理、论坛、日历等。 - **OpenSocial Gadgets**:基于 OpenSocial 标准,允许开发者创建可在...
- Portlet 是 Liferay 中的基本组件,它可以是一个网页、应用程序或内容的展示单元。 - Liferay 支持多种portlet 开发框架,如 Vaadin、Wicket 和 Struts。 - 开发者可以使用 Liferay SDK 创建、部署和管理 ...
Portlet是Liferay中的核心组件,是构建门户应用程序的基本模块。这篇博文将深入探讨如何在Liferay中创建一个简单的Portlet,帮助开发者更好地理解Liferay的开发过程。 首先,让我们了解Portlet的基本概念。Portlet...
Liferay是一个基于Java的Web应用程序,它使用portlet技术来构建可重用的Web组件。portlet可以在门户页面上展示各种内容,如新闻、日历、论坛等。Liferay提供了丰富的API和插件机制,允许开发者根据需求定制和扩展...
Liferay的架构设计中,大量采用了自动化的组件生成工具。例如,通过解析service.xml文件,可以自动生成EJB、HBM(Hibernate Mapping)和Model组件,这一过程主要依赖于Xdoclet引擎。这种自动化机制大大提升了开发...
Portlets是Liferay中可重用的UI组件,它们可以是动态的小应用,如新闻显示、日历或者论坛。该指南可能涵盖了portlet生命周期、MVC Portlet的创建、使用Liferay Service Builder以及portlet的部署等方面。 6. **...
此外,手册可能会讲解如何使用Liferay的内置应用,如文档库、博客、论坛和日历等,以及如何自定义门户外观和行为。 《liferay二次开发指南》则专注于Liferay的扩展和定制。这可能包括portlet开发、主题和布局模板...
Portlets是Liferay中的可重用组件,可以提供各种功能,如新闻展示、日历管理等。Apps可能指的是额外的应用或者扩展。 7. **lib**:这个目录通常存放第三方库和依赖,它们被主题或portlet使用,以实现特定的功能。 ...
- **安装一个捆绑**: 指导用户如何安装包含所有必需组件的Liferay捆绑包。 - **为企业安装Liferay**: 针对大型企业环境的特殊要求提供了安装指南。 - **样本数据**: 安装后可以使用的示例数据,有助于理解Liferay的...
例如,文档可能会讲解如何创建和配置portlet,如何利用Alloy_Liferay实现数据的异步加载,以及如何利用其强大的UI组件如表格、日历等进行界面设计。 总的来说,Alloy_Liferay是一个强大的开发工具,它融合了YUI的...
3. **Portlet**:Portlet是可复用的Web组件,可以是任何Web应用程序,如新闻展示、日历、论坛等。 **关键功能** 1. **单点登录(Single Sign-On, SSO)**:Liferay Portal支持多种安全技术,如ACL(Access Control...
4. **社交网络功能**:集成的社交组件如论坛、博客、日历、任务管理等,促进用户之间的交流和协作。 5. **身份和访问管理**(IAM):提供用户、角色和权限的管理,确保门户的安全性和访问控制。 6. **集成与API**...
通过使用这些工具,开发者可以高效地创建、测试和部署portlet、主题和布局等组件。 **内容管理** Liferay Portal 内置强大的内容管理系统(CMS),支持文档管理、网页发布、新闻和博客发布等功能。用户可以创建、...
它支持多租户、内容管理、工作流、社交协作等功能,且提供了丰富的portlet(portlet是Liferay中的可重用组件)和主题定制能力。 【Struts2】Struts2是一个基于MVC设计模式的Java Web框架,用于简化Java Web应用程序...