当前位置: 首页 > 面试题库 >

javax.el.PropertyNotFoundException:在类型com.example.Bean上找不到属性'foo'

宰父玄天
2023-03-14
问题内容

我有以下结果

Query query = session.createQuery("From Pool as p left join fetch p.poolQuestion as s");

查询,我想在JSP上显示它。

我有循环:

<c:forEach items="${pools}" var="pool">

    <p>${pool.name}</p>

</c:forEach>

并且我想显示poolQ​​uestion表(即Join表)的结果。我要显示的值是“答案”。

我该怎么做?

<c:forEach items="${pools}" var="pool"> 
    <p>${pool.answer}</p>
    <p>${pool.name}</p>             
</c:forEach>

上面的代码不起作用。

错误是:

  org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/home.jsp at line 21

18:     <c:forEach items="${pools}" var="pool"> 
19:             
20:             <p>${pool.name}</p>
21:             <c:out value="${pool.poolQuestion.answer}"/>
22:             
23:     </c:forEach>
24:

    SEVERE: Servlet.service() for servlet appServlet threw exception
javax.el.PropertyNotFoundException: Property 'answer' not found on type com.pool.app.domain.Pool
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:214)
    at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
    at javax.el.BeanELResolver.property(BeanELResolver.java:300)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:938)
    at org.apache.jsp.WEB_002dINF.views.home_jsp._jspx_meth_c_005fforEach_005f0(home_jsp.java:119)
    at org.apache.jsp.WEB_002dINF.views.home_jsp._jspService(home_jsp.java:78)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:574)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:680)

该模型是:

public List<Pool> getAll(){

    Session session = sessionFactory.getCurrentSession();

    Query query = session.createQuery("From Pool as p left join fetch p.poolQuestions as s");

    return query.list();

控制器是:

List<Pool> pool = poolService.getAll();

model.addAttribute("pools", pool);

并且视图是:

<c:forEach items="${pools}" var="pool">

    <p>${pool.name}</p>
    <c:out value="${pool.answer}"/>

</c:forEach>

PS。在${pool.name}显示正常


问题答案:

javax.el.PropertyNotFoundException:在类型com.example.Bean上找不到属性’foo’

从字面上看,这意味着所提到的类com.example.Bean没有针对所提到的property的公共(非静态!)getter方法foo。请注意,此处的字段本身无关紧要!

公共获取方法的名称必须以开头get,然后是属性名称,该属性名称仅在属性名称的第一个字母处大写,例如Foo

public Foo getFoo() {
    return foo;
}

因此,你需要确保有一个getter方法精确匹配属性名称,并且该方法是public -
static),并且该方法不带任何参数,它返回非void。如果您只有一个,但仍然无法正常工作,则很可能是您忙于来回编辑代码,而没有牢固地清理构建,重新构建代码以及重新部署/重新启动应用程序。您需要确保已这样做。

对于boolean(不是Boolean!)属性,getter方法名称必须以开头,is而不是get

public boolean isFoo() {
    return foo;
}

因此,无论类型如何,foo字段本身的存在 都不
重要。它可以具有不同的名称,也可以完全不存在,甚至可以是static。以下所有内容仍应可通过访问${bean.foo}

public Foo getFoo() {
    return bar;
}



public Foo getFoo() {
    return new Foo("foo");
}



public Foo getFoo() {
    return FOO_CONSTANT;
}

您会看到,该字段不是重要的,而是getter方法本身。请注意,属性名称本身不应在EL中大写。换句话说,${bean.Foo}它将永远不会起作用${bean.foo}



 类似资料:
  • 问题内容: 我尝试从协会ManyToMany中调出数据,但是我不能,这是我的代码。 实体产品: 实体终端: 类别:模块JPADao 类别:ModuleService main-flow.xml file.xhtml 我无法获得几何的价值;我得到这个错误: 问题答案: javax.el.PropertyNotFoundException:在类型org.hibernate.collection.int

  • 我得到了这个错误,我不知道问题可能在哪里。“userid”列位于数据库和bean中。有人知道吗?

  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 我一直试图通过ArrayList在Servlet的帮助下在JSP内部打印ResultSet。JDBC部分似乎没有问题。ArrayList可以在JSP内部获得并打印。但是当我想用标记迭代传递到JSP上的列表时,它说我的bean类'purejavaclasses.EmployeeClass'没有属性'id'。我已经尝试了很多不同的解决方案,但都是徒劳的。我不知道该怎么做。我是一个完全的JavaEE初学

  • 我有以下实体: 然后我创建我的存储库: 但我一开始就收到: 未找到MyTable类型的属性getCountOf 我到底做错了什么?

  • 我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。

  • 我试图在登录过程后获得连接的用户模型, 首先,在CanActivate guard检查了带有用户JSON对象的本地存储并发现该对象为空之后,用户将重定向到“/login”URL 然后用户登录并重定向回根URL“/”,在连接过程中我使用AuthService,它将从服务器返回的用户对象保存在用户模型中 这是我的守卫:

  • 在尝试创建一对多(以及多对一)关系时,我遇到以下错误: 以下是完整的故事。目前在这些课程中,我有以下几点: LoginUser.java 用户角色。JAVA 用户角色存储。JAVA 开始atabase.java 我得到的全部错误是: 我不完全确定在哪里或为什么它试图找到一个属性的id时,我显然已经设置了所有类型的UserRole。