Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Struts 2 »

Converting OptionsCollection to Options

Oleg Konovalov

2007-07-30

Replies:

Hi,

I wrote a simple screen with 2 html:selects [fromList, toList] and 2 buttons
Add & Remove
using html:optionscollection tag and now need to rework the code using
"html:options collection="

<html:select property='selectedFromIds' multiple="true">
  <html:*optionsCollection* property='fromList'/>
</html:select>


to something like [that is a piece of my existing application which I have
to follow]:
<html:select property="submissionType" multiple="true"
styleId="submissionTypeID">
<html:*options* collection="SubmissionType" property="submissionTypeID"
labelProperty="submissionType" />
</html:select>
where the only related thing I have declared in the Form is:
public String submissionType[];

 SubmissionType is a Class SubmissionType:
public class SubmissionType {
 private String submissionType;
 private String submissionTypeID;
  ... getters & setters
  }

I tried directly:
<html:select property='selectedFromIds' multiple="true">
  <html:*options Collection=*'fromList'/>
</html:select>

So how do I convert the tags and probably the Java code as well ?

HTTP error:500 JspException: Cannot find bean under name fromList,
although have   List fromList = form.getFromList();

The original sample code is below:

Action:
public class StrutsAction2 extends DispatchAction {

  public ActionForward init(ActionMapping actionMapping, ActionForm
actionForm, HttpServletRequest httpServletRequest, HttpServletResponse
httpServletResponse) throws Exception {
    System.out.println("In Init");
    ControlForm form = (ControlForm)actionForm;
    List fromList = form.getFromList();
    fromList.clear();
    fromList.add(new LabelValueBean("v1", "k1"));
    fromList.add(new LabelValueBean("v2", "k2"));
    fromList.add(new LabelValueBean("v3", "k3"));

    return actionMapping.findForward("init");
  }


  public ActionForward add(ActionMapping actionMapping, ActionForm
actionForm, HttpServletRequest httpServletRequest, HttpServletResponse
httpServletResponse) throws Exception {
    System.out.println("In Add");
    ControlForm form = (ControlForm)actionForm;

    List fromList = form.getFromList();
    List toList = form.getToList();

    String[] selectedFromIds = form.getSelectedFromIds();

    for(int i=0; i < selectedFromIds.length; i++) {
       String id = selectedFromIds[i];

       Iterator iterator = fromList.iterator();

       boolean ok = false;
       while(iterator.hasNext() && !ok) {
          LabelValueBean lvb = (LabelValueBean)iterator.next();

          if(lvb.getValue().equalsIgnoreCase(id)) {
            if(!toList.contains(lvb)) {
              toList.add(lvb);
            }
            ok = true;
          }
       }
    }
    return actionMapping.findForward("add");
  }


  public ActionForward remove(ActionMapping actionMapping, ActionForm
actionForm, HttpServletRequest httpServletRequest, HttpServletResponse
httpServletResponse) throws Exception {
    System.out.println("In Remove");

    ControlForm form = (ControlForm)actionForm;

  List toList = form.getToList();

    String[] selectedToIds = form.getSelectedToIds();

    for(int i=0; i < selectedToIds.length; i++) {
       String id = selectedToIds[i];

       Iterator iterator = toList.iterator();

       boolean ok = false;
       while(iterator.hasNext() && !ok) {
          LabelValueBean lvb = (LabelValueBean)iterator.next();

          if(lvb.getValue().equalsIgnoreCase(id)) {
            iterator.remove();
            ok = true;
          }
       }
    }
    return actionMapping.findForward("remove");
  }
}


Form:
public class ControlForm extends ActionForm {
  private String[] selectedFromIds;
  private String[] selectedToIds;
  private List fromList = new ArrayList();
  private List toList = new ArrayList();
... getters/setters
}

JSP:
©2008 junlu.com - Jax Systems, LLC, U.S.A.