No já na to narazil, kdy jsem se ve Stripes snažil použít tag

<stripes:options-collection/>

který k přistupuje k datům objektů přes gettery reflexí. Zkusil jsem
to obejít a napsal jsem si iteraci sám přes JSP EL, takto:

<stripes:select name="filter.status">
        <stripes:option value=""></stripes:option>
        <c:forEach items="${actionBean.queryStatusList}" var="status">
                <stripes:option 
value="${status.value}">${status.label}</stripes:option>                        
        </c:forEach>
</stripes:select>

a kupodivu to funguje. Přitom bych si myslel, že JSP EL bude dělat
úplně to samé a na stejný getter taky půjde přes reflexi. Tak si
nedokážu vysvětlit proč to v JSP EL funguje a Stripsům přes reflexi
ne.

Tzn. vyřešení toho problému mě ani tak nepálí (mám dobrý workaround),
ale spíš jen zajímá - jak je to možné?!

Honza

2007/11/26, Ondřej Fafejta <[EMAIL PROTECTED]>:
> Ing. Jan Novotný napsal(a):
> > Zdravím konferenci,
> >
> >    dokážete někdo vysvětlit proč při přístupu k metodám Java enum
> > typu, který mám definován takto:
> >
> > public enum QueryStatus implements HasValue {
> >       INSERTED {
> >               public Integer getValue() { return 0; }
> >               public String getLabel() { return "vloženo"; }
> >       },
> >       ALLOWED {
> >               public Integer getValue() { return 1; }
> >               public String getLabel() { return "schváleno"; }
> >       },
> >       FORBIDDEN {
> >               public Integer getValue() { return 2; }
> >               public String getLabel() { return "zamítnuto"; }
> >       }
> > }
> >
> >    vyhazuje java IllegalAccessException? Podaří se mi získat i object
> > Method pro danou getter metodu, ale když se zavolá metoda invoke,
> > vyletí vyjímka IllegalAccessException. Nějak se mi nepodařilo nic
> > vygůglit, tak si nedokážu vysvětlit, kde je problém.
> >
> > Honza N.
> >
> >
> Co třeba to napsat takto?
>
> public enum QueryStatus implements HasValue {
>
>     INSERTED(0, "vlozeno"),
>     ALLOWED(1, "schvaleno"),
>     FORBIDDEN(2, "zamitnuto");
>
>     private Integer value;
>     private String label;
>
>     private QueryStatus(Integer value, String label) {
>         this.value = value;
>         this.label = label;
>     }
>
>     public Integer getValue() {
>         return value;
>     }
>
>     public String getLabel() {
>         return label;
>     }
>
>     public static QueryStatus findQueryStatusByValue(Integer value) {
>         if (value == null) {
>             return QueryStatus.FORBIDDEN;
>         }
>         for (QueryStatus qs : QueryStatus.values()) {
>             if (qs.equals(value)) {
>                 return qs;
>             }
>         }
>         return QueryStatus.FORBIDDEN;
>     }
> }
>
> Dokonce je možné napsat statickou metodu, která podle zadaného parametru
> value vrátí přímo výčtový typ.
> viz. metoda
> public static QueryStatus findQueryStatusByValue(Integer value);
>
> Fafi
>
>


-- 
--------------------------------------------------------------
Ing. Jan Novotný
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://blog.novoj.net
Myšlenky dne otce Fura
--------------------------------------------------------------

Odpovedet emailem