2009-07-05 9 views
0

ice:inputFileコンポーネントに深刻な問題があります。 プロセスをアップロード中にエラーが発生した場合(無効なファイル名エラー、空のファイル名エラー、最大サイズのエラー超過)、これらのエラーメッセージを表示するのにice:messageタグを使用します。 私はice:panelPopupを使用し、内部にice:inputFileコンポーネントを表示します。 問題は:アップロードするポップアップを切り替えてもエラーメッセージが表示される場合、これらのメッセージを消去する方法が必要です。入力ファイルコンポーネントのエラーメッセージ

.........................任意のヘルプは高く評価され、私を助けてください:)

答えて

1

を、私は100%わからないんだけどあなたの質問を正しく理解していれば、の即時というキーワードがポップアップをトリガするアクションに適用されていると思います。通常のJSFのライフサイクルで

<ice:commandLink 
    action="#{this.popup}" 
    immediate="true"> 
     <h:outputText value="foo" /> 
</ice:commandLink> 

、通常、プロセス検証フェーズの後に解雇されアクションイベント。さらに、値はUIからモデルに更新されます。

即時プロパティは、あらゆる種類のイベントを引き起こす可能性がある基本的にすべてのJSFコンポーネントで使用でき、検証をバイパスし、イベントの種類によってはモデル更新フェーズもバイパスします。

alt text http://img43.imageshack.us/img43/3900/jsfimmediatecomponents.png (ゲーリー、Horstmannは、2008コアのJavaServer Facesを - 第2版プレンティスホール。)

あなたはサンズJSFチュートリアルでこのトピックに関するより多くの情報を見つけることができます:ここでThe immediate Attribute

0

は二つのことです私のために働いた。

ice:inputFileコンポーネントをバッキングBeanのプロパティにバインドし、ポップアップウィンドウを閉じるときに、プロパティのresetメソッドを手動で呼び出します。

-OR-

<ice:inputFile binding="#{Bean.uploadedFile}"/>

class BackingBean { 
    private UICommand uploadedFile; 

    public UICommand getUploadedFile() { return uploadedFile; } 
    public void setUploadedFile(UICommand uploadedFile) { this.uploadedFile = uploadedFile; } 

    public void onClose(ActionEvent event) { 
     ((InputFile) uploadedFile).reset(); 
    } 
} 

は、あなたの氷にActionListenerを追加:inputFileコンポーネントを。これにより、inputFileコンポーネントは独自の検証エラーをコンテキストに追加しなくなります。必要な検証をactionListenerメソッドに実装し、ice:messagesタグを使用して検証エラーを表示することができます。これは、エラーメッセージのテキスト/スタイルを完全に制御し、ポップアップウィンドウが消えたときにエラーメッセージが自動的に消去されるため、これはinputFileの検証よりもうまく機能することがわかりました。

<ice:inputFile actionListener="#{Bean.onFileUpload}"/>

public class BackingBean { 
    public void onFileUpload(ActionEvent event) { 
     FileInfo info = ((InputFile) event.getSource()).getFileInfo(); 
     switch (info.getStatus()) { 
      case FileInfo.SAVED : 
       // handle uploaded file 
      case FileInfo.SIZE_LIMIT_EXCEEDED : 
       // file too big error 
      ... 
     } 
    } 
} 

関連する問題