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()%>可以取出其值

解决方案 »

  1.   

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

  2.   

    怎么多了这一句
    <jsp:set
      

  3.   

    <jsp:set 是多余代码,粘贴错了。
    你说的${requestScope.task.task},我试过了,取不出来,但是request对象中确实有task这个对象。当我使用<%request.setAttribute("t",task)%>时,再调用el,这样可以取出来。
      

  4.   

    为什么非要用<jsp:useBean id="task" class="com.sduept.sail.vo.overtime.OvertimePlanTask" scope="request"></jsp:useBean>
    不如在后台直接把对象setAttribute进去,然后在页面使用EL
      

  5.   

    -- 当我使用<%request.setAttribute("t",task)%>时,再调用el,这样可以取出来。你这句是自己set进去的,先测试一下原来request里面是否有这个属性,用getAttribute看能不能get到