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>