# Struts: Wert in einem iterierten Drop-Down Menü selektieren



## SusanneK (23. Mrz 2007)

Hallöle,

ich suche mir jetzt schon einige Zeit lang einen Wolf und auch der Struts User Guide mit den Taglib-Referenzen hat mich nicht weitergebracht. Das Thema Struts ist für mich noch recht neu, weshalb ich hoffe, dass ihr mir hierbei weiterhelfen könnt.

Ich habe ein Drop-Down Menü in meinem .jsp, dessen Werte ich als String-Vector iteriere. Nun möchte ich aber einen bestimmten Wert der Liste selektieren und ich habe keine Ahnung, wie ich das anstellen soll. Normalerweise per property, oder? Allerdings habe ich kein Bean, sondern eben diesen String-Vector. Muss ich nun doch ein Bean erstellen? Oder geht es auch so?

*Hier der Auszug aus meiner .jsp:*


```
<select id="form_holidayarea" name="holiday" onchange="changeFormItem('form_holidayarea')">
    <logic:iterate id="holiday" property="holidayarea" name="holidays"> 
      <option value="<bean:write name="holiday"/>"><bean:write name="holiday"/></option>
    </logic:iterate>
</select>
```

Befüllt wird die Liste in meinem Controller mit:


```
Vector<String> holidays = new Vector<String>();
holidays.add("D-BW");
holidays.add("CH");
request.setAttribute("holidays", holidays);
```

Wie ich oben schon geschrieben habe: Ich kann Werte aus der Liste auswählen und in der Datenbank speichern. Mein Ziel ist es nun aber auch, die ausgelesenen Werte (gelesen wird korrekt) in meine Oberfläche zu schreiben und den entsprechenden Wert zu selektieren.

Ich bin gespannt auf eure Tipps!

Liebe Grüße
Susanne


----------



## clemson (23. Mrz 2007)

ich empfehle dir das <html:select> tag. mit dem wird automatisch selektiert...


----------



## SusanneK (23. Mrz 2007)

Hallo,



			
				clemson hat gesagt.:
			
		

> ich empfehle dir das <html:select> tag. mit dem wird automatisch selektiert...



o.k.... aber wie wird der Selektion dann ein Wert zugeordnet? Irgendwo muss ich doch da bestimmt irgendwas setzen, oder?

Liebe Grüße
Susanne


----------



## HLX (23. Mrz 2007)

Welche Struts-Version verwendest du?

Bei Struts 1 solltest du den Inhalt deines DropDown-Menüs und den ausgewählten Wert in der FormBean ablegen. Der Controller füllt dann die Elemente in der Form-Bean. Da du das DropDown-Menü sicher im Rahmen der Formularverarbeitung anwendest kannst du dann in der Action wiederum das übertragene Formular auswerten.


----------



## SusanneK (23. Mrz 2007)

Hallo,

Struts müsste Version 1.2 sein ... 

Aber das Auswerten ist doch gar kein Problem - ich kriege ja alle Werte (Zumindest habe ich sie mal gekriegt. Jetzt hat sich inzwischen mein Gehirn verknotet und ich blicke bei den ganzen propertys & attributes nicht mehr durch).

Mir geht es nicht darum, sie in das Formular reinzukriegen, sondern darum, dass ich einen der übertragenen Werte selektiere. Verstehst Du, was ich meine?

Nun habe ich damit angefangen:

.jsp


```
<html:select property="holidayarea">
  <html:options collection="holidays" property="holiday"/>
</html:select>
```

mein HolidayBean:


```
public class HolidayBean {

    public HolidayBean(int hid, String holidays) {
        this.setHid(hid);
        this.setHolidays(holidays);        
    }

    private Vector<String> holidayarea;
    private String selected;
    private String holidays;
    private int hid;

    public Vector<String> getHolidayarea() {
        return holidayarea;
    }

    public void setHolidayarea(Vector<String> holidayarea) {
        this.holidayarea = holidayarea;
    }

    public void setSelected(String selected) {
        this.selected = selected;
    }

    public void setHid(int hid) {
        this.hid = hid;
    }

    public void setHolidays(String holidays) {
        this.holidays = holidays;
    }

    public String getSelected() {
        return selected;
    }

    public String getHolidays() {
        return holidays;
    }

    public int getHid() {
        return hid;
    }
```


In meinem Controller:


```
ArrayList<HolidayBean> hbl = new ArrayList<HolidayBean>();
       hbl.add(new HolidayBean(0, ""));       
       hbl.add(new HolidayBean(1, "D-BW"));
       hbl.add(new HolidayBean(2, "CH"));

request.setAttribute("holidayarea", hbl);
```

Das Formbean:


```
public class AddBlackoutForm extends ActionForm {

    protected ArrayList<HolidayBean> holidays;
    protected String holidayarea;

//sowie die getter und setter
```

Wie gesagt... das ist jetzt durch meine Rumprobiererei etwas durcheinander und ich sehe den Wald vor lauter Bäumen nicht mehr. Momentan kriege ich die Fehlermeldung:


```
2007-03-23 16:26:51 ERROR [org.apache.catalina.core.StandardWrapperValve http-8080-Processor8] - Servlet.service() for servlet action threw exception
javax.servlet.jsp.JspException: Cannot find bean under name holidays
	at org.apache.struts.taglib.html.OptionsTag.getIterator(OptionsTag.java:368)
```

Hachja...

Verwirrte Grüße
Susanne


----------



## SusanneK (23. Mrz 2007)

HAH! Ich bin einen Schritt weiter. In der HolidayBean musste ich anstatt


```
private String holidays;
```

das hier


```
private String holiday;
```

deklarieren. Und natürlich die getter und setter anpassen :roll:


----------



## HLX (26. Mrz 2007)

SusanneK hat gesagt.:
			
		

> HAH! Ich bin einen Schritt weiter.



Ist das Problem damit gelöst?


----------



## SusanneK (26. Mrz 2007)

HLX hat gesagt.:
			
		

> SusanneK hat gesagt.:
> 
> 
> 
> ...



Damit war es leider nicht gelöst, aber ich habe mir jetzt selbst etwas anderes zusammengestrickt.

Liebe Grüße
Susanne


----------

