2013-05-02 83 views
1

我有这样的输入:当在一个按钮,用户点击我想启用变化H:与JavaScript的inputText属性JSF2

<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

有没有什么办法来消除这种属性与JavaScript

号右击页面,并在您喜欢的浏览器做查看源。你会看到JSF代码产生一个和所有的HTML代码。在生成的HTML输出<h:inputText>中没有任何代表JSF组件的converter属性。更甚者,转换器根本不在客户端运行。这只是一个服务器端声明,转换器在服务器端运行。

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

<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; 
     } 
    } 
} 
+0

谢谢BalusC,它的工作原理我与此进行测试:' \t \t \t \t \t \t \t \t \t \t效果'它推出只有当转换完成 – begiPass 2013-05-02 13:35:18

+0

不客气的方法ActionListener的。 – BalusC 2013-05-02 13:37:27

+0

但我有一个问题:我用inputText(在datatable中)放的'p:message'不显示错误:' \t \t \t \t \t \t \t \t \t \t \t'我不知道为什么 – begiPass 2013-05-02 13:37:39

-1
$(element).removeAttr("converter"); 
+0

这是jQuery的JavaScript不:) – 2013-05-02 12:09:58

+0

jQuery是JavaScript的实际)。但我明白你的意思。 – MMeersseman 2013-05-02 12:13:55

-1

只要设置为空值这个属性。

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

为什么这段代码被拒绝投票? – 2013-05-02 12:54:08

+0

阅读downvote工具提示的原因。 – BalusC 2013-05-02 12:57:21