8.9. ナチュラル対話へのリダイレクト
ナチュラル対話を開始またはリダイレクトする場合、 ナチュラル対話名を指定する方法はいくつかあります。まずは次のページ定義を見てみましょう。
ここでは、
#{bidAction.placeBid} を呼び出すことによりナチュラル対話 ID PlaceBid で設定された /bid.xhtml にリダイレクトされるのがわかります。 アクションメソッドの宣言は以下のようになります。
@Begin(join = true) public void placeBid()
@Begin(join = true)
public void placeBid()
名前が付いた対話が
<page/> エレメントで指定されると、 その名前が付いた対話へのリダイレクトはアクションメソッドの呼び出しに続いてナビゲーションルールの一部として発生します。既存の対話にリダイレクトする場合は、これが問題となることがあります。アクションメソッドが呼び出される前にリダイレクトが発生する必要があるためです。したがってアクションが呼び出される前に対話名を指定する必要があります。これを行う方法のひとつとして s:conversationName タグの使用があります。
<h:commandButton id="placeBidWithAmount" styleClass="placeBid"
action="#{bidAction.placeBid}">
<s:conversationName value="PlaceBid"/>
</h:commandButton>
<h:commandButton id="placeBidWithAmount" styleClass="placeBid"
action="#{bidAction.placeBid}">
<s:conversationName value="PlaceBid"/>
</h:commandButton>
また、
s:link または s:button のいずれかに conversationName 属性を指定することもできます。
<s:link value="Place Bid" action="#{bidAction.placeBid}"
conversationName="PlaceBid"/>
<s:link value="Place Bid" action="#{bidAction.placeBid}"
conversationName="PlaceBid"/>