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]

Reply via email to