我是JSF的新手,我确信我在做一些愚蠢的事情,但是我一直在尝试不同的事情几天而不能取得任何进展。我试图在用户输入日期而不是使用丰富的日历时进行验证,但由于某种原因,我似乎无法让验证器启动。该页面代码如下:Rich Calendar验证程序
<a4j:outputPanel id="responseReleaseDate" rendered="#{appealSearchManager.isVendor}">
<p><h:outputText value="#{messages.ResponseReleaseDate}"/></p>
<rich:calendar id="responseReleaseDateBegin" datePattern="MM/dd/yyyy"
enableManualInput="true"
buttonIcon="/images/calendar_icon.jpg" buttonClass="calendar"
validator="#{appealSearchManager.validateResponseReleaseDateBegin}"
value="#{appealSearchManager.responseReleaseDateBegin}">
</rich:calendar>
<rich:calendar id="responseReleaseDateEnd" datePattern="MM/dd/yyyy"
enableManualInput="true"
buttonIcon="/images/calendar_icon.jpg" buttonClass="calendar"
validator="#{appealSearchManager.validateResponseReleaseDateBegin}"
value="#{appealSearchManager.responseReleaseDateEnd}">
</rich:calendar>
</a4j:outputPanel>
bean代码我试图援引如下:
public void validateResponseReleaseDateBegin(FacesContext facesContext, UIComponent uiComponent, Object value) throws ValidatorException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
if (value != null && !value.equals("")) {
try {
simpleDateFormat.parse(value.toString());
} catch (ParseException e) {
throw new ValidatorException(new FacesMessage(
FacesMessage.SEVERITY_ERROR,
MessageFormat.format((RootUtils.getCommonBundle().getString(BundleConstants.INVALID_ITEM)), "Response Release Date"),
MessageFormat.format(RootUtils.getCommonBundle().getString(BundleConstants.INVALID_DATE_FORMAT), "Date", "MM/DD/YYYY")));
}
}
}
的奇怪的事情是,我可以达到validateResponseReleaseDateBegin(...)方法使用下面的代码(我知道,它没有意义的文本字段,它仅用于测试目的)。但是,当我为丰富的日历输入内容时,我从来没有选择这种方法。
<div class="div30">
<p><h:outputText value="#{messages.ProgramInvoiceId}"/></p>
<h:inputText id="programInvoiceId"
validator="#{appealSearchManager.validateResponseReleaseDateBegin}"
value="#{appealSearchManager.programInvoiceId}"/>
</div>
任何想法为什么这个验证器在一个地方而不是另一个地方工作?
谢谢!
为什么如果''在从'String'到'Date'的隐式转换步骤中自己已经“验证”它,那么您需要格式验证程序? –
BalusC
2012-03-12 20:50:47
需求状态,我需要收集所有的验证数据,并将其放入弹出窗口(使用JQuery),我很难让日历字段中显示Faces消息。上述方法与其他领域的工作。也许我应该回去弄清楚为什么这些Faces Messages不会先显示出来,然后使用内部验证器。 – 2012-03-12 21:00:27
我认为你并没有理解真正的问题。我发布了一个答案。 – BalusC 2012-03-12 21:06:46