日期:2014-05-18  浏览次数:20709 次

一个关于EL的问题,高手请进
Bean:
public   class   Task{
private   String   task;
public   void   setTask(String   task){
this.task   =   task;
}
public   String   getTask(){
return   task;
}
}
Jsp中的代码(task属性已经有值):
<jsp:useBean   id= "task "   class= "com.sduept.sail.vo.overtime.OvertimePlanTask "   scope= "request "> </jsp:useBean>
<jsp:set
<c:out   value= "${task.task} "> </c:out>
为什么没有打印出task的属性值,请高手帮忙。
当我查看request对象时,发现有task属性
java.util.Enumeration   e   =   request.getAttributeNames();
while(e.hasMoreElements()){
Object   o   =   e.nextElement();
out.println((String)o+ ": ");
out.println(request.getAttribute((String)o)+ " <br/> ");
}
而且使用 <%=task.getTask()%> 可以取出其值

------解决方案--------------------
你在 <jsp:set 这儿做了什么事情?代码断了,看不出来.
EL表达式在查找某一个变量的时候,是以这样的顺序来查找的.pageScope --> requestScope --> sessionScope --> ApplicationScope.
可能你在哪里的代码写错了,导致在pageScope这个范围中创建了一个相同名字的变量,但却没有为其赋值.
或者你也可以在EL表达式中指定变量所处的范围.例: ${requestScope.task.task};
------解决方案--------------------
怎么多了这一句
<jsp:set

------解决方案--------------------
为什么非要用 <jsp:useBean id= "task " class= "com.sduept.sail.vo.overtime.OvertimePlanTask " scope= "request "> </jsp:useBean>
不如在后台直接把对象setAttribute进去,然后在页面使用EL
------解决方案--------------------
-- 当我使用 <%request.setAttribute( "t ",task)%> 时,再调用el,这样可以取出来。

你这句是自己set进去的,先测试一下原来request里面是否有这个属性,用getAttribute看能不能get到