【问题标题】:JSF CRUD application and entitiesJSF CRUD 应用程序和实体
【发布时间】:2010-08-24 18:22:58
【问题描述】:

我正在编写负责 CRUD 操作的应用程序的管理部分。我决定从 jpa 实体生成 jsf 页面,但由于某种原因,我不断收到此错误:

org.apache.jasper.el.JspELException: /busStop/List.jsp(18,12) '#{busStop.pagingInfo.itemCount == 0}' Error reading 'pagingInfo' on type jsf.BusStopController
    at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
    at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:416)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1607)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
    at com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:420)
    at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:209)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    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:298)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.IllegalArgumentException: The type [null] is not the expected [EntityType] for the key class [class jpa.entities.BusStop].
    at org.eclipse.persistence.internal.jpa.metamodel.MetamodelImpl.entity(MetamodelImpl.java:152)
    at org.eclipse.persistence.internal.jpa.querydef.AbstractQueryImpl.from(AbstractQueryImpl.java:97)
    at jpa.controllers.BusStopJpaController.getBusStopCount(BusStopJpaController.java:255)
    at jsf.BusStopController.getPagingInfo(BusStopController.java:43)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
    at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
    at org.apache.el.parser.AstEqual.getValue(AstEqual.java:37)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)

目前,整个代码是在 Netbeans 6.9 中生成的,使用 JSF 1.2 或 2.0 和 postgresql 8.4 数据库。这个问题有什么解决办法吗?

【问题讨论】:

    标签: jsf jpa jsf-2


    【解决方案1】:

    #{busStop.pagingInfo.itemCount == 0}
    在 jsf.BusStopController 类型上读取“pagingInfo”时出错
    类型 [null] 不是键类 [class jpa.entities.BusStop] 的预期 [EntityType]。

    总结:#{busStop}null。确保它在所需的范围内。

    【讨论】:

    • 但是如果数据库中有记录怎么可能是null呢?
    • 不知道。您只发布了异常,没有代码。我只是以更易于理解的方式翻译异常。我会在黑暗中拍摄:它被宣布是懒惰的,但毕竟有些事情失败了?
    • 整个代码是由 Netbeans 生成的 - 生成器在 6.9 中可以搞砸吗?我保留了数据加载的默认选项,而不是延迟加载。但是,现在我不确定它到底是不是懒加载。
    • 以后,试着自己写代码,这样你至少能理解你在编程什么。只要您不理解生成的代码,就不要拖放代码。
    • 但是生成器的目的是在需要时加快进程。人们还可以假设,如果代码是由 Netbeans 生成并编译的 - 它也应该与人们可以编写的代码相反,对吧?
    【解决方案2】:

    DI 101 和错误 #338837 为尝试使用未找到的 EntityType 的 Criteria/Metamodel 用户修复 IAE 问题的工作方法是指定类的位置(Java EE 环境通常不需要) 此环境将存在于 Java SE、Spring 和 Java EE 6 Web Profile 的某些实现中。

    线程“main”java.lang.IllegalArgumentException 中的异常:类型 [null] 不是键类 [class org.eclipse.persistence.example.distributed.collat​​z.model.UnitOfWork] 的预期 [EntityType]。

    http://wiki.eclipse.org/EclipseLink/Development/JPA_2.0/metamodel_api#DI_101:_20100218:_Descriptor.javaClass_is_null_on_a_container_EM_for_a_specific_case

    解决方法是

    http://bugs.eclipse.org/338837

    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    

    <class>org.eclipse.persistence.example.distributed.collatz.model.UnitOfWork</class>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多