将我的JSP Scriptlet代码转换为EL

时间:2015-01-28 08:12:38

标签: java jsp servlets

我正在尝试使用servlet和JSP向用户打印信息。 $ {sessionScope.student.getName()}不起作用,我不知道为什么。有人可以指导我吗?

<%
DevInfo stu = (DevInfo)getServletContext().getAttribute("student");
%>

<li><p>
            <b>Developers Name:</b>
             ${sessionScope.student.getName()}
        </p></li>
    <li><p>

DevInfo类:

public class DevInfo {

private String name;


public DevInfo (String name) {
    this.name = name;

}

public String getName() {
    return name;
}

}

设置属性的开发人员类:`

  public class Developer implements ServletContextListener{


@Override
public void contextDestroyed(ServletContextEvent e) {


    System.out.println("Destroyed!");



}

@Override
public void contextInitialized(ServletContextEvent e) {
    ServletContext cntxt = e.getServletContext();

    String name = e.getServletContext().getInitParameter("dname");

    cntxt.log("gggg "+name);
    DevInfo student = new DevInfo(name);

    cntxt.setAttribute("student", student); 

}

3 个答案:

答案 0 :(得分:1)

表达式语言中访问不同的范围

Attribute "x" value in  page scope : ${x}
Attribute "x" in request scope : ${requestScope.x}
Attribute "x" in session scope : ${sessionScope.x}

出现问题似乎客户是一个bean类,因此可以使用下面的代码段来访问它的属性

${requestScope['control'].firstName}

使用${x}

Jsp容器首先在页面范围中检查属性x。如果可用,则打印属性值。如果它不可用,那么它将检查请求范围,然后是会话和应用程序范围。它只是作为

pageContext.findAttribute(String name);

方法

答案 1 :(得分:0)

<c:out value="${requestScope.control.firstName}" />

客户必须是Java Bean。

答案 2 :(得分:0)

修改

试试这个:

${student.getName()}

假设属性名称为name

${student.name}

jsp useBean的示例用法:

<jsp:useBean id='test' class='package.Test' scope='page'/>

使用EL

调用方法
${test.getTest()}

此处,范围默认为page,可以是requestsession