JSF - h:commandButton のアクションを変更する (2.0)
質問
私は JSF 2.0 を初めて使用します。最後のバージョンでは、「クライアントに送信する内容」に関するルールを変更したい場合は、faces-config.xml を設定するだけでよいことがわかりました。
さて、バージョン 2.0 では、アクションをどのように管理できるでしょうか?たとえば、index.xhtml にこれがあるとします。
<h:commandButton id="submit" value="submit" action="response" />
そして、response.html(xhtmlではありません)というページ、または/folder/response.htmlに配置されたそのページ、またはその他のものを呼び出す必要がありますか?どうすればできるでしょうか?JSF 2.0 がこれらの点に関して非常に柔軟であることは知っています (href リンクの概念は打ち破られています)。したがって、他の方法論を使用してこれを管理できると思います。
解決
の action
次の 2 つのことを指摘できます。
メソッド式
action="#{bean.methodname}"
ここでメソッドは次のようになります。@ManagedBean @RequestScoped public class Bean { public String methodname() { // Do some business task here. return "response"; } }
メソッドを実行すると、アクションには次のようにメソッドの戻り値が含まれることになります。
action="response"
.通常の Java の方法で結果を「動的に」制御することもできます。
public String methodname() { if (someCondition) { return "somepage"; } else { return "anotherpage"; } }
条件の結果に応じて、アクションは次のようになります。
action="somepage"
またはaction="anotherpage"
の別の XHTML ページ 同じ フォルダーを現在の XHTML ページとして保存します。ファイル名を指定するだけです:
action="response"
.
いずれの場合も、次のように構成される XHTML ページに移動します。 outcome + ".xhtml"
どこ outcome
アクションの値です (例: response.xhtml
, somepage.xhtml
または anotherpage.xhtml
) これは、 h:commandButton
.
何も設定する必要はありません faces-config.xml
このために。以前は、JSF 1.x の時代には、次のように定義する必要がありました。 <navigation-case>
このために。
以下も参照してください。
- 臭いfaces-config.xmlは必要ありません。 - Mojarra 開発主任によるブログ。