webForumDet fria alternativet

Struts: Har inte förstått riktigt

1 svar · 327 visningar · startad av Jaar

JaarMedlem sedan juli 2001434 inlägg
#1

Känner att jag står för majoriteten av frågor här just nu :)

Jag har en ActionForm servlet, en Action servlet som jobbar med sidan step1.jsp, och allt funkar bra.

Som jag förstått det så är ActionForm en validator på att användaren har fyllt i det man ska etc.

Nu är det så att jag ska ha en selectbox med fält som jag hämtar från en databas. Vart ska denna koden ligga? Ska det hämtas i Action-klassen eller?

Förut hade jag en böna som jag anropa en funktion i. Är det bara att anropa klassen ifrån Action-klassen, hämta Vectorn (som det är i detta fallet)? Vart lägger jag svaret? Hur kommer jag åt den. Ska jag spara den i ActionFormet? Är inte actionformet det som matats in? Jag behöver det som ska visas på inmatningssidan

conny.lundgrenMedlem sedan sep. 200311 inlägg
#2

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.. :)

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)