使用javascript jsf2更改h:inputText属性

时间:2013-05-02 12:05:09

标签: javascript jsf-2 input converter

我有这个输入:

    <p:column headerText="Quantité">
        <h:inputText styleClass="maqte" id="qte"
            onkeyup="validerInput($(this),$(this).parent().prev().find('.monpu'));"
            value="#{car.qte}" converter="lenientDoubleConverter" >

        </h:inputText>
    </p:column>

如上面的代码所示(converter="lenientDoubleConverter"I use this converter (to disable the implicit conversion of jsf2)

但是当用户点击我要启用它的一个按钮后,我应该在将请求发送到服务器之前用javascript删除此转换器

有没有办法用javascript删除这个属性

提前谢谢

3 个答案:

答案 0 :(得分:3)

  

有没有办法用javascript

删除此属性

没有。右键单击页面并在您喜欢的浏览器中执行查看源。您将看到JSF代码生成一个和所有HTML代码。 JSF组件的converter属性未在<h:inputText>的生成的HTML输出中表示。更重要的是,转换器根本不在客户端运行。它只是一个服务器端声明,转换器在服务器端运行。

最好的办法是让按钮添加一个特定的请求参数,指示转换器不宽松。 E.g。

<p:commandButton ...>
    <f:param name="disableLenientDoubleConverter" value="true" />
</p:commandButton>

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
    try {
        return super.getAsObject(context, component, value);
    } catch (ConverterException e) {
        if ("true".equals(context.getExternalContext().getRequestParameterMap().get("disableLenientDoubleConverter"))) {
            throw e;
        } else {
            return null;
        }
    }
}

答案 1 :(得分:-1)

$(element).removeAttr("converter");

答案 2 :(得分:-1)

只需为此属性设置空值。

document.getElementsById("qte").setAttribute("converter","");