8.8. Creating a natural conversation
Natural conversations are defined in
pages.xml
:
<conversation name="PlaceBid" parameter-name="auctionId" parameter-value="#{auction.auctionId}"/>
The first thing to note in the above definition is the conversation name, in this case
PlaceBid
. The conversation name identifies this particular named conversation uniquely, and is used by the page
definition to identify a named conversation in which to participate.
The
parameter-name
attribute defines the request parameter that will hold the natural conversation ID, and replace 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 use 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>