【问题标题】:Why do I get Javax.servlet.ServletException?为什么我会得到 Javax.servlet.ServletException?
【发布时间】:2018-10-08 18:13:14
【问题描述】:

在我的应用程序中,我可以创建一个应用程序实体,但是当我想查看所有应用程序时,我收到以下错误:

 The class 'io.undertow.servlet.spec.ServletContextImpl' does not have the property 'applicant'

我有其他类似的课程,但它们工作正常,我无法弄清楚这里出了什么问题。

.xhtml 中的引用行:

<p:column filterBy="#{application.applicant.name}" sortBy="#{application.applicant.name}">
        <f:facet name="header">Name</f:facet>
        <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{application.applicant.name}" />
                </f:facet>
                <f:facet name="input">
                    <p:selectOneMenu value="#{application.applicant}" style="width:100%">
                        <f:selectItems value="#{applicantController.allApplicants}" var="s" itemLabel="#{s.name}" />
                    </p:selectOneMenu>
                </f:facet>
            </p:cellEditor>

</p:column>

问题从这里开始:

<h:outputText value="#{application.applicant.name}" />

在我写“application.something”的任何地方都会出现问题。

我最后的想法是在Application.java中,我写了如下注解:

@Entity
@Table(name = "Application")
public class Application {

..但在其他类中,表名以小写开头。

【问题讨论】:

    标签: java hibernate jpa jakarta-ee


    【解决方案1】:

    \#application 解析为实现ServletContext 的隐式表达式语言对象。 (见http://incepttechnologies.blogspot.com/p/jsf-implicit-objects.html)。所以这不是您的应用程序实体。以编程方式,它与 ExternalContext#getContext() 相同,并且自 JSF 1.0 起就存在

    【讨论】:

    • 我也在想同样的事情,但不明白为什么它不是我创建的应用程序实体。
    【解决方案2】:

    根据Mark Dzaebel的评论我找到了答案:

    Application 是一个表达式语言隐式对象。如果您在 jsf 页面中编写 application.something,它会尝试从此隐式对象获取给定属性,而不是您自己的 Application.java 实体。

    在我更改数据表之后

    var="application"
    

    var="apps"
    

    效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多