1

我有这个输入:

    <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"我使用这个转换器(禁用jsf2的隐式转换)

但是当用户单击一个按钮后我想启用它,那么我应该在请求发送到服务器之前使用 javascript 删除这个转换器

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

先感谢您

4

3 回答 3

3

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

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

您最好的选择是让按钮添加某个请求参数,指示转换器不宽容。例如

<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;
        }
    }
}
于 2013-05-02T12:56:58.467 回答
-1
$(element).removeAttr("converter");
于 2013-05-02T12:08:32.580 回答
-1

只需将此属性设置为空值。

document.getElementsById("qte").setAttribute("converter","");
于 2013-05-02T12:09:28.487 回答