如何设置一个p:calendar无效的bean?

How to set a p:calendar invalid from the bean?

我试图将 Java bean 中的日历设置为无效。代码是:

HtmlInputText htmlInput = (HtmlInputText) elem;
String classes = htmlInput.getStyleClass();
String newClasses = classes + " ui-state-error";
htmlInput.setStyleClass(newClasses);

UIInput input = (UIInput) elem;
input.setValid(false);

elem 是日历。 class 在浏览器检查器中显示为 NOT

理论上,input.setValid(false);应该够用了。。。可能是p:calendar的JS做错了什么?

元素是:

<p:calendar 
    value="#{bean.val}"
    id="x"
    locale="it"
    showOtherMonths="true"
    pattern="dd/MM/yyyy"
    navigator="true" 
/>

我使用 Primefaces 3.4.1 和 Mojarra 2.1.7

不要试图重新发明轮子。相反,创建一个验证器。它将负责设置组件的有效状态、错误消息并且它是可重用的。

参见:

  • How to perform validation in JSF, how to create a custom validator in JSF