Hello again,

I wrote struts-config.xml wrong, the rright one is as follows:

  <!-- -->
  <action path="/showx"
      attribute="XForm"
      scope="request"
      validate="false"
      type="com.xxx.yyy.ShowXAction">
    <forward name="success" path="/x.jsp"/>
  </action>

  <!-- -->
  <action path="/x"
      name="XForm"
      scope="request"
      input="/showx.do"
      validate="true"
      type="com.xxx.yyy.XAction">
    <forward name="success" path="/showy.do"/>
  </action>

cheers,
tuna

Tuna Vardar wrote:

Hello,

I lose all form data if validate returns error for the form input.
If action goes through validation without creating of any errors, XAction works fine.
ShowXAction is used to display jsp and jsp posts to XAction.
Any comments?
You can see the code below.


cheers,
tuna

*************************

ShowXAction.java looks like follows:

public final class ShowXAction extends Action {

   public ActionForward execute(ActionMapping mapping, ActionForm form,
           HttpServletRequest request, HttpServletResponse response)
           throws Exception{

// Update form data
if (form == null) {
form = new XForm();
if ("request".equals(mapping.getScope()))
request.setAttribute(mapping.getAttribute(), form);
else
session.setAttribute(mapping.getAttribute(), form);
}
XForm f = (XForm)form;
f.setA("...");
f.setB("...");
//ensure, that form is submited only once
saveToken(request); return mapping.findForward("success");


}

XAction.java looks like:

public final class XAction extends Action {

   public ActionForward execute(ActionMapping mapping, ActionForm form,
           HttpServletRequest request, HttpServletResponse response)
           throws Exception {
                    XForm f = (XForm)form;

XBean b = new XBean(f.getA(), f.getB());
b.store();
//ensure, that form is submited only once
saveToken(request); return mapping.findForward("success");
}



and struts-config.xml is like follows:


   <!-- -->
   <action path="/showx"
       attribute="XForm"
       scope="request"
       validate="false"
       type="com.xxx.yyy.ShowXAction">
     <forward name="success" path="/x.jsp"/>
   </action>

   <!-- -->
   <action path="/x"
       name="XForm"
       scope="request"
       input="/x.do"
       validate="true"
       type="com.xxx.yyy.XAction">
     <forward name="success" path="/showy.do"/>
   </action>


and finally XForm is like follows:


public final class XForm extends ActionForm {

   private String a = null;
     private String b = null;
     public String getA() {
       return this.a;
   }

public void setA(String a) {
this.a = a;
}
public String getB() {
return this.b;
}
public void setB(String b) {
this.b = b;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
this.a = null;
this.b = null;


}

   public ActionErrors validate(ActionMapping mapping,
                                HttpServletRequest request) {

ActionErrors errors = new ActionErrors();
if ((this.a == null) || (this.a.trim().length() == 0)) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("form.a.missing"));
}
if ((this.b == null) || (this.b.trim().length() == 0)) {
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("form.b.missing"));
}
return errors;
}


public String toString() {
StringBuffer sb = new StringBuffer("XForm[");
sb.append("a=").append(this.a);
sb.append(",b=").append(this.b);
return sb.toString();
}
}



--------------------------------------------------------------------- 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