无法使用EL解析对象

时间:2010-09-17 20:23:10

标签: java jsp el

public class Foo extends Properties {
    public String getVal(){
         return "2";
    }
}

在我的HttpServlet类'doGet(..)方法中,我正在这样做,

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}不起作用吗?

[编辑]我只对foo类中的一个属性感兴趣,因为似乎没有办法使用EL访问getVar()调用(对吗?),一个可行的替代方法是jsut put吗? / p>

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

Foo是Properties类的子类的子类,因此我无法轻易地将它们分离。

2 个答案:

答案 0 :(得分:2)

也许你有EL残疾人?检查这两个答案可能的原因和解决方案:

另一种可能性是你的key绑定了其他情境中不同的东西。这段代码:

${key}

相当于:

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

而不是<%= request.getAttribute("key") %>。它首先在pageContext中搜索,然后在请求,会话和应用程序上下文中搜索。

答案 1 :(得分:1)

您的Foo班级有一个toString()方法,其打印方式类似于{}val可能称为错误的吸气剂。在getter调用中添加一些调试行/断点。如果徒劳无功,请发布Foo类的详细信息。