[Java lista] Tapestry PropertySelection
Stef
stefhun at gmail.com
2006. Nov. 20., H, 20:33:50 CET
Raadasul a Kent fele EnjoyWebDevWithTapestry konyvben (melyet sikeresen
megvettem, es Te is emlegettel), jol lathato a 181. oldalon a peldaban, ha
beallitja a Locale-t tajvanira, akkor a poplist neki is visszaall english-re
:-) Tehat az ove sem jo! :-) Nem mintha ez engem megnyugtatna...
Pls. ha valakinek van egy nagyon egyszeru peldaja, mely jol mukodik, tehat
mondjuk ha a form listener-ben kivalt egy delegate-et, es nem all vissza a
poplist az elso elemre, hanem megmarad a kivalasztotton, kerem ossza meg a
lista tagjaival, de az sem baj ha csak velem :-)
Egy biztos, nagyon ugy erzem, hogy a IPropertySelectionModel
implementacioban kell keresnem a hibat. Ami most nalam igy nez ki (kent
verzio), opcionalis ertek nelkul:
public class HelysegSM implements IPropertySelectionModel {
private List helysegs;
public HelysegSM(List Helysegs) {
this.helysegs = Helysegs;
}
public int getOptionCount() {
return helysegs.size();
}
public Object getOption(int index) {
return getHelyseg(index);
}
public String getLabel(int index) {
return getHelyseg(index).getMegnevezes();
}
public String getValue(int index) {
return Integer.toString(index);
}
public Object translateValue(String value) {
return getHelyseg(Integer.parseInt(value)).getId().toString();
}
private Helyseg getHelyseg(int index) {
return (Helyseg) helysegs.get(index);
}
}
Ez total ugyanaz mint a konyv 178. oldala, csak annyi a valtozas, hogy a
translateValue nem a class toString metodus eredmenyet, hanem a POJO
id-javal ter vissza.
Termeszetesen ez ugyanazt produkalja, mint a lenti levelem....
Es itt van a Zsombor (thx!) segitsegevel osszerakott masik megoldas, amiben
van egy opcionalis elem, mely 0 erteku, es integer az ertek, nem string,
valamint nem a lista indexeivel operal, hanem azok id-jevel:
public class HelysegSelectionModel implements IPropertySelectionModel,
Serializable {
private static final long serialVersionUID = 8369051437317999680L;
private List<Helyseg> instances;
private String label = "-- válassz egyet --";
public HelysegSelectionModel(List<Helyseg> helysegList) {
this.instances = helysegList;
}
public HelysegSelectionModel() {
super();
}
public HelysegSelectionModel(List<Helyseg> helysegList, String label) {
this.instances = helysegList;
this.label = label;
}
public int getOptionCount() {
int count = instances.size() + 1;
return count;
}
public Object getOption(int index) {
return (index == 0 || index > instances.size()) ? 0 : instances.get(
index - 1).getId();
}
public String getLabel(int index) {
return index == 0 ? label : instances.get(index -
1).getMegnevezes();
}
public String getValue(int index) {
return index == 0 ? "0" : instances.get(index -
1).getId().toString();
}
public Object translateValue(String value) {
if (value == null || value.trim().length() == 0) {
return null;
}
return Integer.parseInt(value);
}
}
A pojo-t nem rakom ide, mert ossz-vissz 3 propertije van, az
id,megnevezes,iranyitoszam...
Stef
u.i: bocsi a hosszu levelert! annyi idom rament mar erre a
propertyselectionra :-(
2006/11/20, Stef <stefhun at gmail.com>:
>
> Szia!
>
> Ez nagyon erdekes. Olyan, mintha 1 iranyu lenne az egesz.
> Ha a pageBeginRender()-ben beallitok egy erteket, akkor az benne is marad,
> de a poplist nem ugrik a megfelelo elemre a megjelenitesnel (az equals()
> tuti jo...).
> A form listener-ben pedig azt az elemet talalom a get*() metodusban, amit
> kivalasztottam.
> Ha a form listener-ben a delegate elott a set*(get*()) beallitast
> csinalom, az sem erdekli, a lista elso elemere ugrik, holott jo ertek van
> benne.
> Mintha csak irna az ertekbe, de onnan nem olvasna ki semmit a
> propertySelection.
>
> Ha negativ erteket raktam bele, akkor ez nem jutott el az
> IPropertySelectionModel-ig, tehat nem kerdezte le, a hozza tartozo label-t.
>
> Igy deklaraltam a komponenseket:
> <component id="helysegFizikaiPopList" type="PropertySelection">
> <binding name="model" value="ognl:helysegSelectionModel"/>
> <binding name="value" value="ognl:helysegFizikaiId"/>
> <binding name="displayName" value="literal:Fizikai helység"/>
> </component>
> <component id="helysegFizikaiLabel" type="FieldLabel">
> <binding name="field" value="component:helysegFizikaiPopList"/>
> </component>
> <property name="helysegFizikaiId"/>
>
> Es a getHelysegFizikaiId() visszaadja az altalam vagy a formon beallitott
> erteket, de a poplist ra se zizzen. :-(
>
> Mit rontok el?
>
> Stef
>
>
> 2006/11/20, Tibor Vatai <berko at myrealbox.com>:
> >
> > Stef írta:
> > > Szia!
> > >
> > > Nem állítok be default értéket, hanem a lista első eleme maga a "--
> > > válassz egyet --" cimke, 0 értékkel (nem null).
> > >
> > De próbaképpen ha beállítasz 1-et akkor az ok ?
> >
> > Bye
> >
> > Berko
> > _______________________________________________
> > Javalist mailing list
> > Javalist at javagrund.hu
> > http://javagrund.hu/mailman/listinfo/javalist
> >
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20061120/cef042eb/attachment-0001.html
További információk a(z) Javalist levelezőlistáról