これが私のために働いた2つのことです。
ice:inputFileコンポーネントをバッキングBeanのプロパティにバインドし、ポップアップペインを閉じるときにプロパティのresetメソッドを手動で呼び出します。
<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をice: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
...
}
}
}