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
--------------------------------------------------------------