Jor*_* Jr 5 java jsf primefaces
我想在用户执行操作之前验证表单中的两个日期。所以我在使用ajax的ap:calendar中获得af:validator,问题出在f:attribute。我将开始日期作为参数传递,验证器未收到该日期。但是,如果按操作按钮,则日期参数在验证中。我以这篇文章为指导。我的xhtml是:
<p:column >
<p:calendar id="txtStartDate" binding="#{txtStartDate}"
pattern="dd/MM/yyyy"
value="#{myBean.bean.startDate}">
</p:calendar>
</p:column>
<p:column>
<p:calendar id="txtEndDate"
pattern="dd/MM/yyyy"
value="#{myBean.bean.endDate}">
<f:validator validatorId="validator.dateRangeValidator" />
<f:attribute name="fromDate" value="#{txtStartDate.value}" />
<p:ajax event="dateSelect" execute="@Form" update=":formHeader:messages" />
</p:calendar>
</p:column>
Run Code Online (Sandbox Code Playgroud)
和验证器:
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value == null || component.getAttributes().get("fromDate") == null) return;
Date endDate = (Date) value;
Date startDate = (Date) component.getAttributes().get("fromDate");
if (!endDate.after(startDate)) {
FacesMessage message = new FacesMessage("End date before the start date.");
message.setSeverity(FacesMessage.SEVERITY_ERROR);
addMessageOnSession(FacesMessage.SEVERITY_ERROR, "Invalid dates");
throw new ValidatorException(message);
}
}
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助。
| 归档时间: |
|
| 查看次数: |
1689 次 |
| 最近记录: |