2013-03-13 64 views
4

我有一個帶有inputText和commandButton的簡單表單。JSF表單提交在FF但不在IE中

<h:form> 
    <h:inputText id="xyz" value="#{viewImpl.field}" onfocus="clearText(this)" onblur="setDefaultText(this)" /> 
    <h:commandButton action="#{viewImpl.method}"/> 
</h:form> 

如果我點擊commandButton,表單被正確提交。 但是,如果我按Enter鍵,仍然在inputText-Field頁面重新加載,但方法未被調用(服務器處於具有激活斷點的調試模式)。

重要提示:這隻發生在IE 8中。它在Firefox中運行得非常好。 任何線索我如何解決這個問題?

非常感謝!

回答

5

這是IE中一個字段形式的已知問題。按下回車鍵不會觸發表單的第一個下一個按鈕,因此其名稱=值對不會出現在請求參數映射中,因此JSF無法識別該按鈕以排列動作事件。

解決此問題的方法之一是添加第二個但不可見的輸入字段到相同的形式。

<input type="text" name="dummy" style="display: none;" /> 

這將導致IE發送第一個下一個按鈕的名稱=值對。

+0

我認爲另一個明智的選擇是綁定一個自定義的鍵控監聽器到一個輸入字段,該字段在這種情況下標識回車鍵和觸發命令按鈕。 – skuntsel 2013-03-13 19:40:15

+0

@skuntsel:是的,但是如果JS被禁用,這會中斷。我的答案提供了一種適用於所有情況的方法。 – BalusC 2013-03-13 19:40:51

+1

同意。評論意在作爲一個評論,而不是破壞你的答案:) – skuntsel 2013-03-13 19:45:49

相關問題