当前位置: 首页 > 知识库问答 >
问题:

在jsp中使用jstl和el未找到属性异常

寿高阳
2023-03-14

嗨,我试图在会话中遍历对象列表,再次使用JSTL遍历会话中的每个对象。下面是jsp代码

<c:forEach items="${sessionScope}" var="item">
    <b>${item.key}</b>
    <table border=1>
        <c:forEach items="${item.nodes}" var="node">

            <tr>
                <td>${node.link}</td>
                <td>${node.title}</td>
                <td>${node.description}</td>
            </tr>

        </c:forEach>
    </table>

</c:forEach>

下面是node类

public class Nde {

    private String title;
    private String link;
    private String description;
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getLink() {
        return link;
    }
    public void setLink(String link) {
        this.link = link;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }

}
public class PersonalData {
    private List<Nde> nodes;
    private static int count=0;
    private String s;

    public List<Nde> getNodes()  {
        return nodes;
    }



    public String getS() {
        return s;
    }



    public void setS(String s) {
        this.s = s;
    }



    public void setNodes(List<Nde> nodes) {
        this.nodes = nodes;
    }



    public PersonalData() {
        super();
        count++;
        nodes = new ArrayList<Nde>();

    }

    public static int getCount() {
        return count;
    }
}

在循环这些项时,我遇到以下异常

che.jasper.el.JspPropertyNotFoundException: /WEB-INF/views/display.jsp(17,0) '${item.nodes}' Property 'nodes' not found on type javax.servlet.jsp.el.ImplicitObjectELResolver$ScopeMap$ScopeEntry
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:109)
org.apache.jsp.WEB_002dINF.views.display_jsp._jspx_meth_c_005fforEach_005f1(display_jsp.java:155)
org.apache.jsp.WEB_002dINF.views.display_jsp._jspx_meth_c_005fforEach_005f0(display_jsp.java:122)
org.apache.jsp.WEB_002dINF.views.display_jsp._jspService(display_jsp.java:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

为什么它找不到nodes属性?

共有1个答案

江超英
2023-03-14

尝试使用

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<c:forEach items="${sessionScope}" var="item">
<c:if test="${fn:startsWith(item.key,'myData')}" >
    <b>${item.key}</b>
    <table border=1>
       <c:forEach items="${item.value.nodes}" var="node">
            <tr>
                <td>${node.link}</td>
                <td>${node.title}</td>
                <td>${node.description}</td>
            </tr>
        </c:forEach>
    </table>
</c:if>
</c:forEach>
 类似资料:
  • 我下面设置了一个名为“form”的JSP属性 这是有效的。属性“form”包含一个Java对象,它将用于进一步评估和稍后在JSP中显示。但是,我想在不事先知道表单名称的情况下以更通用的方式使用它——它可以被命名为例如“ModelForm”而不是“buildForm”。如果我们假设我已经将变量的名称存储在JSP属性“formName”中 如何使用它来设置JSP属性“form”,如第一个代码示例中所示

  • 问题内容: 某些框架(Spring,Tomcat本身)添加了默认情况下无法在EL表达式内使用的Servlet请求属性。一个例子是 因此,为了使用JSTL获得价值,我通常会使用 但是,这不起作用,因为EL解析器希望是对象A的键,并且是该对象的属性(依此类推)。 所以我的问题是:如何逃脱点字符? 我试过使用 但这也不起作用,并从EL解析器中引发错误。 我知道在处理地图时,我可以使用类似 但这不能处理请

  • 问题内容: 我在JSP中有一个表格。我必须基于请求对象(来自servlet)填充它。如何使用Java Script访问请求对象属性,或者可以建议我其他更好的方法来动态填充表单? 问题答案: 您需要认识到Java / JSP仅仅是HTML/CSS/JS代码生产者。因此,您要做的就是让JSP像打印JavaScript变量一样打印Java变量,并且所生成的HTML / JS代码输出在语法上是有效的。 假

  • 我需要使用jsp jstl在jsp中呈现所有java bean属性。我正在使用spring mvc。下面是Spring代码的一部分。 JSP JSTL代码: 实际上,POJO中有大约300个属性,手动编写类似属性非常繁琐。 我想要一些循环方式来获取所有属性值,这些属性值是使用jstl的jsp,或者可能是其他方式。请分享你的小贴士! 谢谢

  • 15.2. JSP和JSTL Spring为JSP和JSTL这些view层技术提供了几个即取即用的解决方案。使用JSP和JSTL的话,采用WebApplicationContext中定义的普通视图解析器就好;当然,还得自己写一些实际做渲染的JSP页面。本章介绍了一些Spring提供的用于简化JSP开发的额外特性。 15.2.1. 视图解析器 与你在Spring中采用的任何其他视图技术一样,使用JS

  • 问题内容: 我们在Spring 3.0.5上运行Tomcat 6.0,由于某种原因,我们无法通过jsps来评估$ {blah}。这是一个Maven项目,有很多单独的模块,如果需要的话,Eclipse Helios。 这是我的web.xml的片段 这不是(<%@ page isELIgnored =“ false”%>),因为当我将其放入jsp时,页面仅显示为文本,这意味着 $ {2 + 2}未评估