seam提供了多种开始、结束对话的方式,每种都有它独特的地方。
1)url(页面标签)
2)注释@Begin或者直接在方法里调用Conversation.begin()
3)page.xml中的 <begin-conversation
url(页面标签)
这种方式是最明白直接的方式
可以让基本的jsf tag开始对话,也可以用seam自己的tag
h:commandLink默认是参与对话的,如果页面当前是在长对话里的,那么 h:commandLink也会在该对话里,一般来说我们是不需要对 h:commandLink进行对话处理的,就让它参与当前对话,可能会用到 <s:conversationPropagation type="end"/>来结束对话
<h:commandLink action="main" value="Exit">
<f:param name="conversationPropagation" value="none"/>
</h:commandLink>
<h:commandLink action="main" value="Exit">
<s:conversationPropagation type="end"/>
</h:commandLink>
a和h的 tag原理相同
<a:commandLink action="main" value="Exit">
<s:conversationPropagation type="end"/>
</a:commandLink>
让outputLink参与到对话中
<h:outputLink value="main.jsf">
<s:conversationId/>
<h:outputText value="Continue"/>
</h:outputLink>
s tag默认就是支持对话的
<s:link view="...xhtml" propagation="begin"/>
<s:button view="...xhtml" propagation="begin"/>