开启、关闭对话的各种方式
开启长对话
有多种开启方式
1)在页面url中开启
<s:link view="/stock/trafficDocNoAss.xhtml" propagation="begin"
?
也可以直接在url增加conversationPropagation=begin参数
http://localhost:8080/NBSBase/stock/trafficDocNoAss.seam?conversationPropagation=begin
?
2)在***.page.xml中开启
trafficDocNoAss.page.xml
<page xmlns="http://jboss.com/products/seam/pages"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd">
??? <begin-conversation join="true"/>
</page>
当进入trafficDocNoAss..xhtml页面前开始长对话
?
3)通过@Begin注释
??? @Begin
??? public void delete(FormCodes FormCodes){
??? ??? System.out.println("dddd"+FormCodes.getFormCode());
??? ??? try {
??? ??? ??? formCodesDao.remove(FormCodes);
??? ??? } catch (BusinessException e) {
??? ??? ??? // TODO Auto-generated catch block
??? ??? ??? e.printStackTrace();
??? ??? }
??? ??? search();
??? ??? super.cleanEntity();
??? }
?
4)Conversation.instance().begin()
??? public void delete(FormCodes FormCodes){
??? ??? Conversation.instance().begin();
分析各自特点:
1)开始方便,缺点:直接通过url进入页面不能开始对话
2)基本上没有缺点,直接通过url进入页面也能开始对话
3与4基本类似,缺点是需要执行指定的方法,将对话加在那个方法上是有讲究的。
?
关闭长对话1)在页面url中关闭
<s:button view="/home.xhtml" propagation="end" value="back"></s:button>
2)在***.page.xml中关闭
<page xmlns="http://jboss.com/products/seam/pages"
??? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.1.xsd">
??? <end-conversation/>进入页面前关闭当前对话
</page>
3)在程序中控制
@End和Conversation.instance().end()
?
4)利用对话超时特性
上面的3种方式都不能很好的关闭对话,因为用户可能不按程序设计的步骤操作。
将对话超时设置的比较短就会自动关闭非当前的长对话。