Не могу разрешить объекты, используя EL - PullRequest
1 голос
/ 18 сентября 2010
public class Foo extends Properties {
    public String getVal(){
         return "2";
    }
}

В моем методе doGet (..) класса HttpServlet я делаю это,

Foo foo = new Foo();
request.setAttribute("key", foo);

Тогда в .jsp есть этот код,

1  ${key}
2  ${key.val}
3  <%=request.getAttribute("key")%>
4  <%=((Foo)request.getAttribute("key")).getVal()%>

И это вывод,

1  {}
2  
3  {}
4  2

Может кто-нибудь сказать, почему $ {key.val} не работает?

[Edit] Меня интересует только одно свойство из класса foo, поскольку, похоже, нет способа получить доступ к вызову getVar () с помощью EL (верно?), Будет ли жизнеспособная альтернатива jsut put? 1013 *

request.setAttribute("key_val", foo.getVal());

Foo является подклассом подкласса класса Properties, поэтому у меня нет возможности их легко отделить.

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

Может быть, вы отключили EL?Проверьте эти два ответа на возможные причины и решения:

Другая возможность состоит в том, что у вас key привязано к чему-то другому в других ваших контекстах.Этот код:

${key}

Эквивалентен:

<%= page.findAttribute("key") %>

, а не <%= request.getAttribute("key") %>.Сначала выполняется поиск в pageContext, а затем, наконец, контекст запроса, сеанса и приложения.

1 голос
/ 18 сентября 2010

Ваш класс Foo имеет метод toString(), который печатает как {}, а val, вероятно, называется неправильным получателем.Добавьте несколько строк отладки / точек останова к вызовам геттера.Если напрасно, опишите подробнее, как выглядит класс Foo.

...