2011-10-17 19 views
1

は、私が説明&は空白として名を残して、私は確認ボタンをクリックして入力した場合、私は不足している名のいずれかのエラーメッセージが表示されない次のような形式バリデーターが呼び出されないのはなぜですか?私のアプリケーションで

<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> 

を持っています。 1つの奇妙なことは、私のページは、私が説明のためにタイプしたものがなくなったためにリフレッシュされているようです。また、名前と説明の両方を入力しても、actionListenerのaddItem関数は呼び出されませんでした。

昨日、すべてが機能していました。誰かが私がここで間違っていたかもしれないことを教えてもらえれば、とても感謝しています。

+0

コマンドボタンにajax( '

+0

「更新」とは、「確認」ボタンをクリックした後、以前のリクエストに全く関係しない全く新しいリクエストのようです。私のManagedBeanはViewScopeにあります。これは、名前を入力しなくても、入力した説明がここになければならないことを意味します。 –

+0

しかし、検証が失敗した場合、 'Update Model Values'フェーズは正しくエスケープされますか? –

答えて

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"を保持する必要があります。フォームが全く提出されない唯一の理由は、ExtensionsFilterweb.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

関連する問題