Ending natural conversation fails
blabno Sep 4, 2008 10:44 AMI have strange problem. I want to start 2 conversations on entering 2 pages.
User should have only one such conversation per page. Natural conversations
seam to be the right choice. However problem arises when I remove such
conversation via #{entry.destroy}
. It gets destroyed, but a new conversation
gets created right away. When I'm on usersList.xhtml and remove itemsList
a new usersList
conversation gets created. When I'm on itemsList.xhtml
and remove usersList
then itemsList
conversation gets created. This
seems to be triggered by pages.xhtml. All works fine when I'm on index.xhtml
and remove those conversations. What am I doing wrong ?
pages.xhtml :
<?xml version="1.0" encoding="UTF-8"?> <pages 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"> <page view-id="/usersList.xhtml" conversation="UsersList"> <description>#{messages.usersList}</description> <begin-conversation join="true"/> </page> <page view-id="/itemsList.xhtml" conversation="ItemsList"> <description>#{messages.categoriesList}</description> <begin-conversation join="true"/> </page> <conversation name="UsersList" parameter-name="cid" parameter-value="1"/> <conversation name="ItemsList" parameter-name="zid" parameter-value="1"/> </pages>
template.xhtml :
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link href="./css/default.css" rel="stylesheet" type="text/css" /> <link href="./css/cssLayout.css" rel="stylesheet" type="text/css" /> <title>EndNaturalConversation</title> </head> <body> <div id="left"> <s:link propagation="none" view="/index.xhtml" value="Home"/><br /> <s:link conversationName="UsersList" view="/usersList.xhtml" value="Users list"/><br /> <s:link conversationName="ItemsList" view="/itemsList.xhtml" value="Items list"/><br /> <hr /> <h:form> <h:dataTable value="#{conversationList}" var="entry"> <h:column> <h:commandLink action="#{entry.select}" value="#{entry.description}" rendered="#{!entry.current}"/> <h:outputText value="#{entry.description}" rendered="#{entry.current}"/> <h:outputText value="[current]" rendered="#{entry.current}"/> </h:column> <h:column> <h:outputText value="#{entry.startDatetime}"> <f:convertDateTime type="time" pattern="HH:mm"/> </h:outputText> </h:column> <h:column> <h:outputText value="#{entry.lastDatetime}"> <f:convertDateTime type="time" pattern="HH:mm"/> </h:outputText> </h:column> <h:column> <h:commandLink value="end" action="#{entry.destroy}" rendered="#{!entry.current}"> <s:conversationPropagation type="none" /> </h:commandLink> </h:column> </h:dataTable> </h:form> </div> <div id="content" class="left_content"> <ui:insert name="content">Content</ui:insert> </div> </body> </html>
itemsList.xhtml :
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" template="./template.xhtml"> <ui:define name="content"> <h:form> <h:dataTable value="#{items}" var="item"> <h:column> #{item.name} </h:column> </h:dataTable> </h:form> </ui:define> </ui:composition>
usersList.xhtml :
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" template="./template.xhtml"> <ui:define name="content"> <h:form> <h:dataTable value="#{users}" var="user"> <h:column> #{user.username} </h:column> </h:dataTable> </h:form> </ui:define> </ui:composition>
DataStore.java :
package endnaturalconversation; import java.util.ArrayList; import java.util.List; import org.jboss.seam.annotations.Factory; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Out; @Name("dataStore") public class DataStore { @Out(required=false) List<User> users; @Out(required=false) List<Item> items; @Factory public void getUsers() { users = new ArrayList<User>(); users.add(new User("Jack")); users.add(new User("Stan")); users.add(new User("Don")); } @Factory public void getItems() { items = new ArrayList<Item>(); items.add(new Item("Belt")); items.add(new Item("Shoe")); items.add(new Item("Tie")); } }