2011-10-17 68 views
1

在我的應用程序,我有以下形式爲什麼不調用Validator?

<h:form id="addItemForm" enctype="multipart/form-data">      
    <h:panelGrid columns="3" border="1"> 
     <h:outputText value="Name: " /> 
     <h:inputText label="name" 
        id="name" value="#{addItem.name}" 
        required="true" requiredMessage="Name is required." /> 
     <h:message styleClass="errorMsg" for="name" /> 

     <h:outputText value="Description: " /> 
     <h:inputText label="description" 
        id="description" value="#{addItem.description}" 
        required="true" requiredMessage="Description is required." /> 
     <h:message styleClass="errorMsg" for="description" /> 

     <h:outputText style="font-weight: bold" value="Picture : " /> 
     <t:inputFileUpload label="picture" 
          id="picture" value="#{addItem.picture}" 
          required="true" requiredMessage="Picture is required." /> 
     <h:message styleClass="errorMsg" for="picture" /> 

    </h:panelGrid> 
    <h:commandButton value="Confirm" actionListener="#{addItem.addItem}"/> 
    <h:outputText id="status" value="#{addItem.statusMsg}" /> 
</h:form> 

如果我輸入的描述&保留原來的名稱空白,我點擊確認按鈕,我沒有看到任何錯誤訊息失蹤名。一個奇怪的是,我的網頁似乎被刷新,因爲我輸入的任何描述都沒有了。另外,即使我輸入了名稱和描述,actionListener中的addItem函數也不會被調用。

昨天,一切正常。如果有人能告訴我我在這裏可能做錯了,我會非常感激。

+0

您必須爲命令按鈕使用ajax('

+0

通過「刷新」我的意思是我點擊確認按鈕後,它似乎是一個全新的請求,根本不涉及到前一個請求。我的ManagedBean在ViewScope中,這意味着我輸入的描述應該在這裏,即使我沒有輸入名稱。 –

+0

但是,如果驗證失敗,那麼'更新模型值'階段將被正確地轉義? –

回答

2

刪除enctype="multipart/form-data"。 JSF沒有對它的本地支持。 JSF依賴提交的請求參數application/x-www-form-urlencoded,而這已經是默認的表單編碼。您的表單中也沒有任何<input type="file">字段(既不清楚也不代表第三方JSF組件),因此根本不需要multipart/form-data編碼。

也許之前的工作原理是因爲您有一些第三方組件庫提供的過濾器,它可以解析和準備multipart/form-data對JSF的請求,但您已將其從web.xml中刪除,或者您尚未將其包含在新項目中。


更新:你編輯的問題,包括<t:inputFileUpload>。好的,你應該保持enctype="multipart/form-data"。表單完全沒有提交的唯一原因可能是ExtensionsFilter已從web.xml中刪除或未能初始化。添加它和/或閱讀webapp啓動日誌。這是負責將multipart/form-data請求解析爲JSF的可用參數的人。另一個可能的原因是,您將多個<h:form>組件嵌套在一起,從而產生無效的HTML。另見commandButton/commandLink/ajax action/listener method not invoked or input value not updated

+0

其實,我確實有一個文件輸入字段,我試圖縮短我的代碼,所以人們不必讀太多。非常感謝你的幫助!你對JavaEE真的很有經驗。當我將我的代碼與存儲庫中的朋友代碼合併時,我忘記更新web.xml。因此,我失去了我的過濾器和過濾器映射設置。 –

+0

不客氣。 – BalusC

相關問題