我有这个输入:
<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删除这个属性
提前谢谢
答案 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","");