Hi,

I am having an issue with select list and not able to figure out a
resolution. Any help is greatly appreciated. Here is the scenario.

I have 2 action classes. One (Approve.do) for displaying the form with
prepopulated values from database. A second Action(SaveApprove.do) to
take the form values and do validations and then do further business
process. The first action populates all select lists fine. But when I
submit the screen with new values and if any validation fails, it gives
me an error 
Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.JspException: Cannot find bean: "agreeStatus" in any
scope
        at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:935)
        at
org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCol
lectionTag.java:173)

Code snapshots are below

ApproveAction class

labelvaluePairs2.add(new LabelValueBean("Select One", "Select One"));
                while(iter.hasNext()){ //this is a result set from
database
                        String val = (String) iter.next();
                        labelvaluePairs2.add(new LabelValueBean(val,
val));
                }
//aForm.setAgreeStatus(labelvaluePairs2); -- this did not help where
aForm is the form instance and agreeStstus is list in Form.
                request.setAttribute("agreeStatus", labelvaluePairs2);
return (mapping.findForward("approve"));

SaveApproveAction class

if (!errors.isEmpty()) {
        return (mapping.getInputForward());
}

//save the form values to database
And I am repeating the labelvaluePairs2 code above.(I started without it
but thought doing this would put it in scope, but it did not help)
return (mapping.findForward("success"));

Struts-config.xml

    <action path="/Approve" name="ApproveForm"
type="approve.ApproveAction" scope="request" validate="false">
        <forward name="approve" path="exs.approve"></forward>
    </action>
    <action path="/SaveApprove" name="ApproveForm"
type="approve.SaveApproveAction" parameter="methodToCall"
scope="request" input="exs.approve">
        <forward name="success" path="exs.success"></forward>
    </action>

Approve.jsp
<bean:define id="appr" name="approveInfo" property="approveDetails"
/>//This is a bean with list of classes
<html:select property="agreementStatus" name="appr">
        
<html:optionsCollection name="agreeStatus" value="value" label="label"/>
                                                </html:select>

For good measure I added this in Action Form with getter and setter
methods
List agreeStatus = null;

public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request) {
                //request.setAttribute("agreeStatus", agreeStatus); --
This did not help
                //return super.validate(mapping, request);
                ActionErrors errors = new ActionErrors();
                return errors;
        }

I have no idea how to redisplay the form when validations fail. Any
advise would be a great help. Thanks in advance.


Thanks
Prakash

  • Problem with r... Prakash Inuganti -X \(pinugant - Digital-X, Inc. at Cisco\)

Reply via email to