4
私は開始日と終了日に検証を配置する必要があり4つのテキストボックスクロスフィールド検証:dataTableの
<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>
がされたXHTMLページを持っています。ユーザーが開始日と終了日をid = "startDate"に入力した場合& id = "endDate"は開始日を「01/01/2012」(1jan)と終了日:01/31/2012とし、ユーザーがいくつかの日付を入力した場合上記のブール関数は、現在あると場合は、id =「startDate1」とidに=「endDate1」ID =「startDate1は、」常に日付範囲が
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;
}
}
わからない重複しないようにしてくださいつまり、ID =「endDateに」THN大きくなければなりませんこのシナリオでは機能します。 ご協力いただければ幸いです。
クロスフィールド検証(IMO JSFはこれまでにないことがあります)を見てみるとよいでしょう - http://stackoverflow.com/questions/6282466/jsf2-0-doesnt-support-cross-field-validation-is --here-a-workaroundまたはJEE6の場合は、Bean検証 – planetjones