大家好,
我是Liferay的新手,我做了一些从jsp到Liferay门户的移植。
如果我有一个portlet jsp,其中包含两个日期,例如: FromDate ToDate,并使用两个不同liferay ui:input- date,每个日期字段一个,如下:
...
<%-- From DATE --%>
<tr>
<td>
From date :
</td>
<td>
<liferay-ui:input-date
dayParam='<%= "strDataRegDa" + "Day" %>'
dayValue="<%=Integer.parseInt(strDataRegDa.substring(0,2))%>"
dayNullable="<%= false %>"
monthParam='<%= "strDataRegDa" + "Month" %>'
monthValue="<%=(Integer.parseInt(strDataRegDa.substring(3,5))) -1 %>"
monthNullable="<%= false %>"
yearParam='<%= "strDataRegDa" + "Year" %>'
yearValue="<%=Integer.parseInt(strDataRegDa.substring(6))%>"
yearNullable="<%= false %>"
yearRangeStart="<%= 1980 %>"
yearRangeEnd="<%= 2050 %>"
firstDayOfWeek="<%= Calendar.MONDAY - 1 %>"
imageInputId='<%= "ceremonyDate"%>'
disabled="false" >
</liferay-ui:input-date>
</td>
</tr>
<%-- To DATE --%>
<tr>
<td>
To date :
</td>
<td>
<liferay-ui:input-date
dayParam='<%= "strDataRegA" + "Day" %>'
dayValue="<%=Integer.parseInt(strDataRegA.substring(0,2))%>"
dayNullable="<%= false %>"
monthParam='<%= "strDataRegDa" + "Month" %>'
monthValue="<%=(Integer.parseInt(strDataRegA.substring(3,5))) -1 %>"
monthNullable="<%= false %>"
yearParam='<%= "strDataRegDa" + "Year" %>'
yearValue="<%=Integer.parseInt(strDataRegA.substring(6))%>"
yearNullable="<%= false %>"
yearRangeStart="<%= 1980 %>"
yearRangeEnd="<%= 2050 %>"
firstDayOfWeek="<%= Calendar.MONDAY - 1 %>"
imageInputId='<%= "ceremonyDate"%>'
disabled="false" >
</liferay-ui:input-date>
</td>
</tr>
....有没有办法控制ToDare is >= FromDate?
使用纯jsp,我可以通过javascript做到这一点。
但是使用Liferay如何做到这一点呢?
发布于 2012-03-22 21:56:16
在我们的项目中,我在我的Portlet类中对日期的两个日期进行了手动验证。我也搜索过,但找不到liferay提供的任何东西。通过javascript,我不知道合金UI是否提供了一些东西。
因此,在我的拙见中,liferay没有提供任何验证两个日期的功能(至少到目前为止),这可以从一些开箱即用的liferay portlet中看出,这些portlet没有这种验证,例如带有display-date和expiry date的公告-portlet。
发布于 2015-01-21 17:20:41
也许你需要像定制验证器这样的东西。在您的jsp中尝试以下代码:
<liferay-ui:input-date name="fromDate"></liferay-ui:input-date>
<liferay-ui:input-date name="toDate">
<aui:validator name="custom" errorMessage="your custom validation msg">
function(val, fieldNode, ruleValue)
{
// No error when toDate is blank
if(val == ""){
return true;
}
var fromDate;
var toDate;
var result=false;
var fromDateObj = document.getElementById("<portlet:namespace />fromDate");
if(fromDateObj) {
fromDate = new Date(fromDateObj.value);
}else{
result = false;
}
toDate = new Date(val);
if(fromDate && toDate){
result = (toDate.getTime() > fromDate.getTime());
}else{
result = false;
}
return result;
}
</aui:validator>
</liferay-ui:input-date>希望这对你有帮助。
谢谢。
发布于 2016-05-17 22:16:06
我的回答是基于AGi的回答。例如,如果使用德语设置,liferay-ui:input-date会将其值格式化为DD/MM/YYYY而不是MM/DD/YYYY (我仍然不知道如何更改input-date的格式..)。这意味着fromDate = new Date(fromDateObj.value)不能工作。因此,我做了一个变通办法,直接访问日、月和年,并手动比较这些值。此解决方案的一个优点可能是您独立于input-date使用的格式:
<liferay-ui:input-date
name="startDate"
yearParam="startDateYear"
monthParam="startDateMonth"
dayParam="startDateDay"
/>
<liferay-ui:input-date
name="endDate"
yearParam="endDateYear"
monthParam="endDateMonth"
dayParam="endDateDay"
>
<aui:validator name="endDateAfterStartDate" errorMessage="some-error-message">
function(value, fieldNode, ruleValue) {
var result = false;
var startDateYear = parseInt(document.getElementById("<portlet:namespace />startDateYear").value);
var startDateMonth = parseInt(document.getElementById("<portlet:namespace />startDateMonth").value);
var startDateDay = parseInt(document.getElementById("<portlet:namespace />startDateDay").value);
var endDateYear = parseInt(document.getElementById("<portlet:namespace />endDateYear").value);
var endDateMonth = parseInt(document.getElementById("<portlet:namespace />endDateMonth").value);
var endDateDay = parseInt(document.getElementById("<portlet:namespace />endDateDay").value);
if (endDateYear > startDateYear) {
result = true;
} else if (endDateYear == startDateYear) {
if (endDateMonth > startDateMonth) {
result = true;
} else if (endDateMonth == startDateMonth) {
if (endDateDay > startDateDay) {
result = true;
}
}
}
return result;
}
</aui:validator>
</liferay-ui:input-date>也许这对某些人有帮助。
https://stackoverflow.com/questions/8322829
复制相似问题