私は、このサンプルコードがあります。#{flash.keep.message}の式言語でメソッド連鎖はどのように機能しますか?
<h:form>
<h:commandButton action="#{fooBar.foo()}" value="Submit"/>
</h:form>
と豆で:
@ManagedBean
@ApplicationScoped
public class FooBar {
public String foo() {
final Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
flash.put("message", "Hello World");
return "hello?faces-redirect=true";
}
}
し、最終的にhello.xhtml
<h:body>
#{flash.keep.message}
</h:body>
にだから私はindex.xhtml
に行くが、私はリダイレクトされます、提出ヒット期待どおりhello.xhtml
になります。そして私がページをリフレッシュすると、flash.keepの動作が素晴らしいため、メッセージが表示されます。
今私はdocumentationを開いて何が起こっているのか理解しようとしています。
このクラスにはkeep()
メソッドがありますが、戻り値の型はvoid
で、String
パラメータが必要です。したがって#{flash.keep.message}
はkeep()
メソッドをメッセージパラメータ?私は本当にそうは思わない、私が知っている限りそれは#{flash.keep(message)}
だったはずですね。
ここでは何が起こっていますか?