Bean in Conversation is null after 2nd Page
accountclosed Jul 24, 2008 9:26 PMI have an application with a registration wizard and an action (MemberRegistrationAction) bean that has a member bean (Member). It's very similar to the SeamSpace example. My problem is that the Member bean is set to null after the following set of steps:
1.) register.html calls MemberRegistrationAction.start which creates a new Member object (object is not null) ... forward onto:
2.) register1.html calls MemberRegistrationAction.agreeToLicense which accesses the Member object ... sucessfully edits some data in Member ... forward onto:
3.) register2.html calls MemberRegistrationAction.finalize which tries to access the member object. However the member object is now null. It's been somehow removed.
I'm running in Tomcat 6, Seam 2.0.2.
My pages.xml file is:
<?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.0.xsd" no-conversation-view-id="/index.xhtml" login-view-id="/index.xhtml"> <conversation name="regmem" parameter-name="memberID" parameter-value="#{memberreg.newMember.memberID}"/> <page view-id="/register.xhtml"> <navigation from-action="#{memberreg.start}"> <begin-conversation join="true" conversation="regmem"/> <rule if="#{memberreg.started}"> <redirect view-id="/register1.xhtml"/> </rule> </navigation> <navigation> <rule if="#{memberreg.agree}"> <redirect view-id="/register2.xhtml"/> </rule> <rule if="#{memberreg.started and not memberreg.agree}"> <redirect view-id="/register1.xhtml"/> </rule> <rule if="#{identity.loggedIn}"> <redirect view-id="/memberadmin.xhtml"/> </rule> </navigation> </page> <page view-id="/register1.xhtml" conversation-required="true" conversation="regmem"> <restrict>#{memberreg.started}</restrict> <navigation from-action="#{memberreg.agreeToLicense}"> <rule if="#{memberreg.agree}"> <redirect view-id="/register2.xhtml"/> </rule> </navigation> <navigation from-action="#{memberreg.cancel}"> <end-conversation/> <rule if="#{not memberreg.agree}"> <redirect view-id="/index.xhtml"/> </rule> </navigation> <navigation> <rule if="#{identity.loggedIn}"> <redirect view-id="/memberadmin.xhtml"/> </rule> </navigation> </page> <page view-id="/register2.xhtml" conversation-required="true" conversation="regmem"> <restrict>#{memberreg.agree}</restrict> <navigation from-action="#{memberreg.finalize}"> <rule if="#{memberreg.completed}"> <redirect view-id="/index.xhtml"/> <end-conversation/> </rule> <rule if="#{not memberreg.completed}"> <redirect view-id="/register2.xhtml"/> </rule> </navigation> <navigation> <rule if="#{identity.loggedIn}"> <redirect view-id="/memberadmin.xhtml"/> </rule> </navigation> </page> </pages>
register.html has the following button:
<h:commandButton value="Register" action="#{memberreg.start}"> <s:conversationName value="regmem"/> <s:conversationPropagation type="join"/> </h:commandButton>
register1.html has the following button:
<h:commandButton id="agreebut1" value="Agree" action="#{memberreg.agreeToLicense}"> <s:conversationName value="regmem"/> <s:conversationPropagation type="join"/> </h:commandButton>
register2.html has the following button:
<h:commandButton id="finalize" value="Submit" action="#{memberreg.finalize}"> <s:conversationName value="regmem"/> <s:conversationPropagation type="join"/> </h:commandButton>
My MemberRegistrationAction.java class is:
@Scope(CONVERSATION) @Name("memberreg") public class MemberRegistrationAction implements Serializable { ... @Out(required = false) @In(required = false) private Member newMember; ... }
The methods listed in MemberRegistrationAction do not have any annotations in them.
Any help would be greatly appreciated.
-Arron