【发布时间】:2012-02-10 07:39:37
【问题描述】:
我有一个 XHTML 页面,其中有四个文本框
<h:column >
<f:facet name="header">
<h:outputText value="Start Date" />
</f:facet>
<h:inputText id="startDate" value="#{sampleVO.startDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="End Date" />
</f:facet>
<h:inputText id="endDate" value="#{sampleVO.endDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="Start Date" />
</f:facet>
<h:inputText id="startDate1" value="#{sampleVO.startDate}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="End Date" />
</f:facet>
<h:inputText id="endDate1" value="#{sampleVO.endDate}" />
</h:column>
我需要对开始日期和结束日期进行验证。如果用户在 id="startDate" & id="endDate" 中输入一些开始和结束日期,让我们说开始日期:“01/01/2012”(1 月)和结束日期:01/31/2012 并且如果用户输入一些日期on id="startDate1" 和 id="endDate1" id="startDate1" 应始终大于 id="endDate" 即日期范围不应重叠
public class SampleServiceimpl implements SampleService {
private List<SampleVO> listOfSample;
//this function gets called when clicked on Submit button on XHTML page
public Void submit() {
// how can i call datesOverLaps function to check entered
// start date and End date not overlapping, Also how to
// display the error message on XHTML page using FacingContext
}
public boolean datesOverlaps(List<SampleVO> sampleVO) {
final Date early = sampleVO.getStartDate();
final Date late = sampleVO.getEndDate();
for(SampleVO existing : sampleVO) {
if(!(early.isAfter(existing.getEnd())) ||
(late.isBefore(existing.getStart()))){
return true;
}
}
return false;
}
}
不确定上述布尔函数是否是最新的并且可以在场景中工作。 任何帮助将不胜感激。
【问题讨论】:
-
你可能想看看跨字段验证(IMO JSF 从来没有做对过) - stackoverflow.com/questions/6282466/… 或者如果你是 JEE6 可能看看 Bean Validation