Conversation example
chetanpadhye Feb 15, 2010 3:38 PMHI ,
I have requirement of opening new window /tab for page flows which fits for seam conversational scope
below is code of same .. i m not sure what i am doing wrong in it. To open window ui have normal wndow.open js call. object to be shared between multiple tab is kept in conversation scope . The action before starting new tab is annotated with @Begin ... Please suggest any idea
Action class
package com.mydomain.registration; import org.jboss.seam.annotations.Begin; import org.jboss.seam.annotations.End; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; @Name("register") public class RegisterAction { @In private User user; @End public void confirm() { } @Begin(join = true) public void register() { user.getTestlist().add( user.getUsername() ); System.out.println(user.getUsername()); } }
User object which is put in conversation scope
package com.mydomain.registration; import java.util.ArrayList; import java.util.List; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; @Name("user") @Scope(ScopeType.CONVERSATION) public class User { private String username; private List<String> testlist = new ArrayList<String>(); public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public List<String> getTestlist() { return testlist; } public void setTestlist(List<String> testlist) { this.testlist = testlist; } }
Register Page
<?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:s="http://jboss.com/products/seam/taglib" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j"> <head> <title>Register New User</title> </head> <body> <script> function openWindow() { open("registered.seam","_blank","left=0,top=0, height=673, width=1014, resizable=yes, toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,dependent=yes"); } </script> <f:view> <a4j:form> <h:panelGrid columns="2"> Username: <h:inputText value="#{user.username}" /> </h:panelGrid> <a4j:commandLink value="Register Command Link" action="#{register.register}" oncomplete="openWindow();"> <f:param name="conversationId" value="#{conversation.id}" /> </a4j:commandLink> </a4j:form> </f:view> </body> </html>
New tab/Window opens up with following page
<?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:f="http://java.sun.com/jsf/core"> <head> <title>Successfully Registered New User</title> </head> <body> <f:view> Here is Username :- , #{user.name} #{user.testlist} --- #{user.testlist.size} </f:view> </body> </html>