Re: Struts: Har inte förstått riktigt
Inte säker att jag förstår din fråga rakt ut, men här är min tolkning.
* Ur ett MVC2-design synpunkt bör du inte lägga något logik i actionklassen, flytta ut den till en separat klass som du anropar ifrån action-klassen.
* Actionform är i sin enklaste form bara en objektversion av ditt formulär (samma fält med accessers till formuläret)
* Om du vill populera en select ifrån t.ex en databas så anropar du en funktion ifrån din klass som gör ungefär dethär
Vi börjar med en "dropdown" klass som jag har byggt som gör det hela lite smidigare
public class DropdownBean
{
private int id;
private String description;
public DropdownBean() {
}
public DropdownBean( int id, String description ) {
this.id = id;
this.description = description;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
----------
private ArrayList getStuff () {
ArrayList mBeanarr = new ArrayList();
while (rs.next()) {
mBean = new MyBeanClass();
mBean.setYYY(1);
mBeanarr.add(new DropdownBean( rs.getInt("id"), rs.getString("field")));
}
return mBeanarr();
}
Metoden anropar i stil med.
Collection mSelectArr = getStuff();
session.setAttribute("mysessionstuff", mSelectArr);
I din JSP sida gör du något i stil med
<logic:iterate id="xyz" name="mysessionstuff">
<option><bean:write name="xyz" property="person_name"/></option>
</logic:iterate>
<html:select name="myForm" property="mysessionstuff">
<html:options collection="mysessionstuff" property="id" labelProperty="description"/>
</html:select>
---
Det där fixar biffen, det är lite pseudo-kod, men jag hoppas att du förstår principen som kortfattat är
1 - hämta data, lägg den i en array,collection,vector.
2 - lägg din array i en session
3 - hämta datan i din jsp med <html:select>
( lite rörigt, men det är måndag morgon.. :)