3

我想禁用一个输入字段 inputtext 的默认 JSF 验证和转换,以便能够使用 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属性。

我怎样才能做到这一点?

4

1 回答 1

4

据我在目前提供的信息中看到的,该组件还没有经过验证。String当您将非类型绑定为输入组件的值时,也许您特别指的是隐式转换?不,您不能禁用此功能。您只能通过提供一个不会引发异常但只会null在失败时返回的自定义转换器来解决它。

例如,通过扩展标准 JSFDoubleConverter并完全抑制ConverterExceptionon 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 验证客户端或服务器端?

于 2013-04-25T01:06:41.977 回答