这个问题可以重复,并且在StackOverflow上有很多答案。

但是我仍然没有得到代码中的问题。

会话中存储的对象是MessageResponse类的cmdResponse

这就是我从会议中得到的

命令响应:

<%
    Object cmdResponse = session.getAttribute("cmdResponse");
    MessageResponse messageResponse = (MessageResponse) cmdResponse;
%>


有一个getMessage()方法就是getter方法。这是MessageResponse类的代码

public class MessageResponse extends Response {
    String message;

public MessageResponse() {
    // TODO Auto-generated constructor stub
}

public MessageResponse(String command, String message) {
    super(command);
    this.message = message;
}


public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

}


这就是我试图渲染的方式

<c:out value="${messageResponse.getMessage()}" />


但上面的行不显示任何内容,并且在服务器上没有错误。可能是什么问题?

最佳答案

如果要使EL可以访问messageResponse变量,则必须将其作为request的属性。

request.setAttribute("messageResponse", messageResponse);


或者你可以使用

<c:out value="${cmdResponse.getMessage()}" />


当EL在session中找不到名称时尝试使用request

最后但并非最不重要的一点是,<c:out value="${messageResponse.message}" />(或<c:out value="${cmdResponse.message}" />应该足够了,EL自己调用适当的吸气剂。

07-24 13:09