1) Again, replace the names of your form fields:
from: <s:textfield
name="#session.formBean.firstName"value="%{#session.formBean.firstName}"
label="First Name" size="16" />
to: <s:textfield name="formBean.firstName" label="First Name" size="16" />
2) SessionAware interface: it is pointless to implement it if you are
not going to save the session Map in an instance variable for future
reference, and if getting the session through Map session =
(Map)ActionContext.getContext().get("session"); works, it is not the
preferred way of getting it [1]
3) javascript code: Note that if the user press Enter key on a
textfield, the form will be submitted without assigning your target
hidden field.
[1] http://struts.apache.org/2.1.2/docs/how-do-we-get-access-to-the-session.html
2008/9/19 Dave Newton <[EMAIL PROTECTED]>:
> As was mentioned to you previously, at the very least you shouldn't use
> "#session..." as the name; you should just use "session" if you've
> implemented a getSession() method. That may be enough; can't test at the
> moment.
>
> Dave
>
> --- On Fri, 9/19/08, 928572663 <[EMAIL PROTECTED]> wrote:
>> I am using Zero Configuration (annotations), so no
>> struts.xml necessary.
>>
>> ----------------
>> formDetails.jsp
>> ----------------
>>
>> <!DOCTYPE html PUBLIC "~//W3C//DTD XHTML 1.0
>> Strict//EN"
>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
>>
>> <%@ page contentType="text/html;charset=UTF-8"
>> language="java"%>
>> <%@ taglib prefix="s"
>> uri="/struts-tags"%>
>>
>> <html>
>> <head>
>> <title>IPSM struts2 Demo Form</title>
>> <link href="<s:url value
>> ='/css/main.css'/>"
>> rel="stylesheet"
>> type="text/css" />
>> </head>
>> <body>
>> <h2>
>> <s:property value="message" />
>> </h2>
>>
>> <s:actionerror />
>> <s:form action="sample!submit"
>> method="post">
>>
>> <s:checkbox
>> name="#session.formBean.requery"
>> label="Requery?" />
>>
>> <s:textfield
>> name="#session.formBean.firstName"
>> value="%{#session.formBean.firstName}"
>> label="First Name"
>> size="16" />
>>
>> <s:textfield
>> name="#session.formBean.maxValue"
>> value="%{#session.formBean.maxValue}"
>> label="Max Value"
>> size="10" /> (<s:property
>> value="%{#session.formBean.maxValueRangeMin}"
>> />-<s:property
>> value="%{#session.formBean.maxValueRangeMax}"
>> />)
>>
>> <s:textfield
>> name="#session.formBean.lastName"
>> value="%{#session.formBean.lastName}"
>> label="Last Night"
>> size="10" required="true" />
>>
>> <s:label
>> key="#session.formBean.maxValueRangeMax"
>> label="Max Routes (Max)" />
>>
>> <s:textarea label="Comment"
>> name="#session.formBean.comment"
>> cols="15" rows="8" />
>>
>> <s:select
>> name="#session.formBean.selection"
>> value="%{#session.formBean.selection}"
>> label="Selection"
>> list="#session.formBean.picklist"
>> listKey="code"
>> listValue="label" />
>>
>> <s:hidden name="target"
>> value="setme" />
>>
>> <s:url var="back_button_url"
>> value="/images/back_button.gif" />
>> <s:submit type="image"
>> src="%{#back_button_url}" label=""
>> cssClass="formButton"
>>
>> onclick="javascript:this.form.target.value='backButton';
>>
>> this.form.submit();" />
>>
>> <s:url var="next_button_url"
>> value="/images/next_button.gif" />
>> <s:submit type="image"
>> src="%{#next_button_url}" label=""
>> cssClass="formButton"
>>
>> onclick="javascript:this.form.target.value='nextButton';
>>
>> this.form.submit();" />
>>
>> </s:form>
>>
>> </body>
>> </html>
>>
>> ----------------
>> MyFormBean.jsp
>> ----------------
>>
>> package sample;
>>
>> import java.util.ArrayList;
>> import java.util.List;
>>
>> public class MyFormBean
>> {
>> private boolean requery = true;
>> private String firstName = "";
>> private String selection = "";
>> private String lastName = "";
>> private String comment = "";
>> private int maxValue = 0;
>>
>> //~~~ items for GUI display purposes etc.
>> private final int maxValueRangeMin = 1;
>> private final int maxValueRangeMax = 263732;
>> private List<PicklistItem> picklist = null;
>> //~~~
>>
>> public MyFormBean()
>> {
>> picklist = new ArrayList<PicklistItem>();
>> picklist.add(new
>> PicklistItem("1","Item 1"));
>> picklist.add(new
>> PicklistItem("2","Item 2"));
>> picklist.add(new
>> PicklistItem("3","Item 3"));
>> picklist.add(new
>> PicklistItem("4","Item 4"));
>> picklist.add(new
>> PicklistItem("5","Item 5"));
>> }
>>
>> public boolean isRequery()
>> {
>> return requery;
>> }
>>
>> public void setRequery(boolean requery)
>> {
>> this.requery = requery;
>> }
>>
>> public String getFirstName()
>> {
>> return firstName;
>> }
>>
>> public void setFirstName(String firstName)
>> {
>> this.firstName = firstName;
>> }
>>
>> public String getSelection()
>> {
>> return selection;
>> }
>>
>> public void setSelection(String selection)
>> {
>> this.selection = selection;
>> }
>>
>> public String getLastName()
>> {
>> return lastName;
>> }
>>
>> public void setLastName(String lastName)
>> {
>> this.lastName = lastName;
>> }
>>
>> public String getComment()
>> {
>> return comment;
>> }
>>
>> public void setComment(String comment)
>> {
>> this.comment = comment;
>> }
>>
>> public int getMaxValue()
>> {
>> return maxValue;
>> }
>>
>> public void setMaxValue(int maxValue)
>> {
>> this.maxValue = maxValue;
>> }
>>
>> public List<PicklistItem> getPicklist()
>> {
>> return picklist;
>> }
>>
>> public void setPicklist(List<PicklistItem>
>> picklist)
>> {
>> this.picklist = picklist;
>> }
>>
>> public int getMaxValueRangeMin()
>> {
>> return maxValueRangeMin;
>> }
>>
>> public int getMaxValueRangeMax()
>> {
>> return maxValueRangeMax;
>> }
>> }
>>
>> ----------------
>> PicklistItem.jsp
>> ----------------
>>
>> package sample;
>>
>>
>> public class PicklistItem
>> {
>> private String code = "";
>> private String label = "";
>>
>> public PicklistItem(String aCode, String aLabel)
>> {
>> code = aCode;
>> label = aLabel;
>> }
>>
>> public String getCode()
>> {
>> return code;
>> }
>>
>> public void setCode(String code)
>> {
>> this.code = code;
>> }
>>
>> public String getLabel()
>> {
>> return label;
>> }
>>
>> public void setLabel(String label)
>> {
>> this.label = label;
>> }
>> }
>>
>> ----------------
>> SampleAction.jsp
>> ----------------
>>
>> package sample;
>>
>>
>> import java.util.Map;
>>
>> import org.apache.struts2.config.Result;
>> import org.apache.struts2.config.Results;
>> import org.apache.struts2.interceptor.SessionAware;
>> import org.apache.struts2.views.tiles.TilesResult;
>>
>>
>> import com.opensymphony.xwork2.ActionContext;
>> import com.opensymphony.xwork2.ActionSupport;
>>
>> @Results(
>> {
>> @Result(name = "displayFormPage", value =
>> "/formDetails.jsp"),
>> @Result(name = "homeError", value =
>> "/homeError.page", type =
>> TilesResult.class)
>> } )
>> public class SampleAction extends ActionSupport implements
>> SessionAware
>> {
>> private String message = "";
>> private String target = "";
>> private MyFormBean formBean = new MyFormBean();
>>
>> public void setSession(Map<String, Object>
>> session)
>> {
>> Object obj = session.get("formBean");
>> if (obj == null)
>> {
>> session.put("formBean", formBean);
>> }
>> }
>>
>> public void setFormBean(MyFormBean formBean)
>> {
>> Map session =
>> (Map)ActionContext.getContext().get("session");
>> session.put("formBean", formBean);
>> }
>>
>> public MyFormBean getFormBean()
>> {
>> Map session =
>> (Map)ActionContext.getContext().get("session");
>> return
>> (MyFormBean)session.get("formBean");
>> }
>>
>> public String displayForm() throws Exception
>> {
>> formBean = new MyFormBean();
>> formBean.setComment("struts2 is cool");
>> formBean.setFirstName("Linus");
>> formBean.setLastName("Torvalds");
>> formBean.setMaxValue(50);
>>
>> setFormBean(formBean);
>>
>> // Map session = (Map)
>> ActionContext.getContext().get("session");
>> // session.put("formBean",formBean);
>>
>> return "displayFormPage";
>> }
>>
>> public String submit() throws Exception
>> {
>> if (target != null
>> && target.length() > 0)
>> {
>> setMessage(target
>> + " was pressed.");
>> }
>>
>> // Map session = (Map)
>> ActionContext.getContext().get("session");
>> // formBean =
>> (MyFormBean)session.get("formBean");
>>
>> return "displayFormPage";
>> }
>>
>> public String getMessage()
>> {
>> return message;
>> }
>>
>> public void setMessage(String message)
>> {
>> this.message = message;
>> }
>>
>> public String getTarget()
>> {
>> return target;
>> }
>>
>> public void setTarget(String target)
>> {
>> this.target = target;
>> }
>> }
>>
>>
>>
>>
>> Gabriel Belingueres wrote:
>> > Could you post your struts.xml, action and (one of
>> the) JSP?
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail:
>> [EMAIL PROTECTED]
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]