如何在Liferay 6.2 CE GA2中设置<aui:input>标签的日历日期和语言环境?

kap*_*ura 4 java calendar date liferay-6 liferay-aui

我目前无法设置<aui:input>标签的日历日期和语言环境格式:

  • 它仍然显示一个空的非本地化输入模式(mm / dd / yyyy)
  • 单击以展开日历时,即使Date指定了值,所选日期也始终是现在
  • 在日历中选择日期后,输入字段将填充所选日期,但格式错误(仍然为mm / dd / yyyy)

由于我的声誉,我无法上传图像或共享一个以上的链接,因此在这里我将前面提到的三种情况合并为一个图像。

这是我目前在.jsp文件中所做的事情:

<%
Calendar calendar = CalendarFactoryUtil.getCalendar(themeDisplay.getTimeZone(), themeDisplay.getLocale());
Date date = new Date(571096800000l); // A random date different than NOW.
calendar.setTime(date);
System.out.println("calendar date = " + calendar.getTime()); // Fri Feb 05 22:00:00 GMT 1988

Format formatter = FastDateFormatFactoryUtil.getDate(themeDisplay.getLocale(), themeDisplay.getTimeZone());
String formattedDate = formatter.format(date);
System.out.println("formatted date = " + formattedDate); // formatted date = 5.02.88
%>

<aui:input type="date" name="test1" value="<%= calendar %>"/>
<aui:input type="date" name="test2" value="<%= calendar.getTime() %>"/>                 
<aui:input type="date" name="test3" value="<%= date %>"/>
<aui:input type="date" name="test4" value="<%= date.getTime() %>"/>
<aui:input type="date" name="test5" value="<%= date %>"/>
<aui:input type="date" name="test6" value="<%= date.getTime() %>"/>
<aui:input type="date" name="test7" value="<%= formattedDate %>"/>
Run Code Online (Sandbox Code Playgroud)

非常感谢您的宝贵时间!

Rei*_*igo 5

看来您已经成功地自欺欺人,以为Liferay中的AlloyUI实际上支持type =“ date”,但事实并非如此。您在屏幕快照上看到的日历由Chrome提供,因为AlloyUI构造了一个输入type =“ date”,然后Chrome进行了HTML5魔术,并为您提供了日期输入。

正确的答案是AUI根本不支持日期输入,您必须将实现切换到其他方式。建议的liferay-ui:input-date是一个不错的选择,但是如果您希望更好的选择,请尝试使用jQuery UI datepicker,它可以指定显示格式和提交给服务器的其他格式。

不利的一面是,您可能应该实现自己的taglib,以使其很好地可重用。