[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