2013-05-02 82 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