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类的子类的子类,因此我无法轻易地将它们分离。
答案 0 :(得分:2)
也许你有EL残疾人?检查这两个答案可能的原因和解决方案:
另一种可能性是你的key
绑定了其他情境中不同的东西。这段代码:
${key}
相当于:
<%= page.findAttribute("key") %>
而不是<%= request.getAttribute("key") %>
。它首先在pageContext中搜索,然后在请求,会话和应用程序上下文中搜索。
答案 1 :(得分:1)
您的Foo
班级有一个toString()
方法,其打印方式类似于{}
,val
可能称为错误的吸气剂。在getter调用中添加一些调试行/断点。如果徒劳无功,请发布Foo
类的详细信息。