9.8. Creating a natural conversation
Natural conversations are defined in
pages.xml file:
<conversation name="PlaceBid" parameter-name="auctionId" parameter-value="#{auction.auctionId}"/>
In the above definition the conversation name is
PlaceBid. The conversation name identifies a named conversation uniquely, and is used by the page definition to identify the named conversation in which to participate.
The
parameter-name attribute defines the request parameter that holds the natural conversation ID, and replaces the default conversation ID parameter. In this case, parameter-name is auctionId. This means that the URL of your page will contain auctionId=765432 instead of a conversation parameter like cid=123.
The final attribute,
parameter-value, defines an EL expression to evaluate the value of the natural business key to be used as the conversation ID. In this example, the conversation ID will be the primary key value of the auction instance currently in scope.
Next, we define the pages participating in the named conversation. This is done by specifying the
conversation attribute for a page definition:
<page view-id="/bid.xhtml" conversation="PlaceBid" login-required="true"> <navigation from-action="#{bidAction.confirmBid}"> <rule if-outcome="success"> <redirect view-id="/auction.xhtml"> <param name="id" value="#{bidAction.bid.auction.auctionId}"/> </redirect> </rule> </navigation> </page>