我想禁用默认的JSF验证和一个输入字段inputtext的转换,以便能够使用jQuery对其进行验证。
<p:column headerText="Quantité">
<p:inputText widgetVar="input_qte" styleClass="my_qte" value="#{arti.qte}">
<f:validateBean disabled="true"/>
</p:inputText> \
<h:outputText styleClass="my_qtemax" value="#{arti.qtemax}" />
<div class="my_validator" style="display : none;">Valeur Invalide</div>
</p:column>
#{arti.qte}
绑定到Double
属性。
我怎样才能做到这一点?
答案 0 :(得分:4)
就我在目前提供的信息中看到的那样,该组件尚未进行验证。当您将非String
类型绑定为输入组件的值时,也许您特别指的是隐式转换?不,你不能禁用它。您只能通过提供不会引发异常的自定义转换器来解决此问题,但只会在失败时返回null
。
E.g。只需扩展标准JSF DoubleConverter
并完全取消ConverterException
上的getAsObject()
:
@FacesConverter("lenientDoubleConverter")
public class LenientDoubleConverter extends DoubleConverter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
try {
return super.getAsObject(context, component, value);
} catch (ConverterException ignore) {
return null;
}
}
}
然后用作:
<p:inputText ... converter="lenientDoubleConverter" />
无关,请注意客户端验证/转换绝对不可靠。当JavaScript在客户端完全运行时,最终用户可以完全控制正在执行的代码。即最终用户可以轻松禁用,绕过,欺骗它等。另请参阅JSF2 Validation Clientside or Serverside?