ケースは次のとおりです。
ファイルを解析する Bean メソッドがあり、解析が失敗した場合はエラー メッセージが追加され、解析が成功した場合は成功メッセージが追加されます。
しかし、fail>success という操作を連続して行うと、fail メッセージが消えて成功メッセージが表示されると思いますが、fail メッセージがまだそこにあり、success メッセージが追加されます。
リストはすでにクリアされているため、メッセージを追加する前に MessageList をクリアすることは解決策ではありません。メッセージを追加する前にメッセージ リストのサイズを出力しようとすると、どちらの場合も 0 になります。
では、成功した場合に失敗メッセージを削除する解決策とその逆の解決策は何ですか?
豆:
@Component("mybean")
@Scope("view")
public class MyBean {
try {
myservice.parseFile(file);
} catch (Exception e) {
FacesMessage msg = new FacesMessage();
msg.setSeverity(FacesMessage.SEVERITY_FATAL);
msg.setSummary("Invalid file.");
facesContext.addMessage(null, msg);
return;
}
FacesMessage msg = new FacesMessage();
msg.setSeverity(FacesMessage.SEVERITY_INFO);
msg.setSummary("Success");
facesContext.addMessage(null, msg);
}
意見:
<h:form>
<ace:fileEntry id="fileEntryComp"
label="File Entry"
relativePath="uploaded"
fileEntryListener="#{mybean.listener}" />
<h:commandButton value="Upload File" />
<h:messages styleClass="myclass" infoStyle="Color:blue;" errorStyle="Color:red;" fatalStyle="margin-right: 85%; Color:red;" globalOnly="true"/>
<h:messages for="fileEntryComp" style="display:none;"/> <!-- to hide the faces development message-->
</h:form>
アップデート:
ここで回避策も試しました:
JSFでコンポーネントHTMLコンテンツを削除することは可能ですか
新しいメッセージを追加する前にメッセージ div をクリアしますが、新しいメッセージはありません。彼が古いメッセージをどこから取得したのかわかりません。
更新 2:
ここに記載されている2つの回避策も試しました:
http://www.icefaces.org/JForum/posts/list/19753.page#71521
1-コンテキスト パラメータの追加:
<context-param>
<param-name>org.icefaces.messagePersistence</param-name>
<param-value>false</param-value>
</context-param>
も機能しません。
2-保存されたグローバル メッセージ コレクションの消去:
私はこの解決策を試しました:
List<FacesMessage> globals = (List<FacesMessage>) facesContext.getViewRoot().getAttributes().get("org.icefaces.event.saved_global_faces_messages");
if (globals != null) {
globals.clear();
}
しかし、私は常に次の例外を受け取ります:
Caused by: java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.clear(Collections.java:1037)
at com.xeno.phoneSuite.beans.DepartmentBean.listener(DepartmentBean.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at org.icefaces.component.fileentry.FileEntry.broadcast(FileEntry.java:311)
... 92 more