java - Retaining values between multiple JSPs and Actions in Struts 2 -
my struts project structure follows: page1->action1->page2->action2->page3
what need value entered in input tag in page1 accessed in action2.
here code:
page1:
<div class = "container"> <s:form id = "idinput" method = "post" action = "identered"> enter id: <input id = "txtid" name = "txtid" type = "text" /> <input id = "cmdsubmit" name = "cmdsubmit" type = "submit" value = "enter details" /> </s:form> </div> action1:
public class addid extends actionsupport { private int txtid; //getter , setter @override public string execute() throws exception { return "success"; } }
page2:
<div class = "container"> <s:form id = "formvalues" method = "post" action = "formentered"> <p>your id entered is: <s:property value = "txtid" /></p> first name: <input id = "txtfname" name = "txtfname" type = "text" /> last name: <input id = "txtlname" name = "txtlname" type = "text" /> age: <input id = "txtage" name = "txtage" type = "text" /> <input id = "cmdform" name = "cmdform" type = "submit" value = "submit form" /> </s:form> </div> action2:
public class addform extends actionsupport { private string txtfname; private string txtlname; private int txtage; private int txtid; //getters , setters @override public string execute() throws exception { return "success"; } }
and displaying in
page3:
<div class = "container"> id: <s:property value = "txtid" /><br> first name: <s:property value = "txtfname" /><br> last name: <s:property value = "txtlname" /><br> age: <s:property value = "txtage" /> </div> this face problem txtid displayed null, inferred value not passed page2 action2
a solution have come use
<s:hidden value = "%{txtid}" name = "txtid2 /> in form in page2 allow me use value of txtid txtid2 in action2, seems more hack actual solution, other suggestions welcome.
in situation want keep field values passed 1 action configure scope of field. place same field getters , setters in each action, in case action1 , action2. field name txtid. scope interceptor doesn't include in defaultstack should reference in action configuration. example
<action name="action1" class="com.package.action.addid"> <result>/jsp/page2.jsp</result> <interceptor-ref name="basicstack"/> <interceptor-ref name="scope"> <param name="key">mykey</param> <param name="session">txtid</param> <param name="autocreatesession">true</param> </interceptor-ref> </action> <action name="action2" class="com.package.action.addform"> <result>/jsp/page3.jsp</result> <interceptor-ref name="scope"> <param name="key">mykey</param> <param name="session">txtid</param> <param name="autocreatesession">true</param> </interceptor-ref> <interceptor-ref name="basicstack"/> </action> now have scope key mykey , field txtid under it. providing accessors field in each action make transfer field value 1 action another. in example above used basicstack skeleton interceptor stack , not include interceptors including validation interceptor. if need have other features actions, should either construct custom stack or reference other interceptors in action configuration.
Comments
Post a Comment