需要帮助来更新旧的JSP代码。 tableData标记中的对象类型

时间:2019-07-01 20:01:50

标签: jsf

我正在尝试更新一些旧的JSF代码以使其与新版本的事物一起运行(JDK 1.8.0_161,Apache Tomcat / 8.5.42,javax.faces-2.4.0,javax.servelet.jsp-api-2.3。 3)

dataTable标记为返回的数据集String(而不是ServerBean)返回了错误的类。

具体错误是:

reason=500 - javax.servlet.ServletException: /server.jsp(132,9) '#{m.name}' Property [name] not found on type [java.lang.String]

我已对此进行了整整3天的研究,结果空白。 有带HTML的JSF,它显示带有数据库数据的表。 问题在于返回的变量应该是一个Java类,但是它以字符串形式返回。我在JSF / JSP方面的经验有限,但是会尝试包括我认为相关的内容。

  • 我已将所有内容更新为可以在1.8以下的版本
  • 我已经更新了DTD和DOCTYPE
  • 我已经更新了Eclipse Java EE插件报告的严重HTML问题
  • 我已经更新了Java中的集合 要输入的代码:ArrayListArrayList<ServerBean>
  • 我已确保ServerBean类位于类路径<%@ page import="com.xxx.yyy.beans.ServerBean"%>

JSP:

<h:dataTable>
   </h4> <h:dataTable id="servers" value="#{serverdefn.serverList}" var="m" styleClass="font1">
    <h:column>
        <h:outputLink value="#{m.name}" />
        <h:outputText value="#{m.name}" />
    </h:column>
</h:dataTable>

WEB-INF / server-defn.xml:

<managed-bean>
    <managed-bean-name>server1</managed-bean-name>
    <managed-bean-class>com.xxx.yyy.beans.ServerBean</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
    <managed-property>
        <property-name>name</property-name>
        <value>Local</value>
    </managed-property>
...

</managed-bean>



<managed-bean>
    <managed-bean-name>serverlist</managed-bean-name>
    <managed-bean-class>java.util.ArrayList</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>
    <list-entries>
        <value>#{server1}</value>
        <value>#{server2}</value>
    </list-entries>
</managed-bean>

ServerBean.java:

protected ArrayList<ServerBean> serverList;

public ArrayList<ServerBean> getServerList() {
    return serverList;
}

随着之前的实现工作,我相信它将把变量 m 作为ServerBean。新内容将其作为String引入。

在哪里/如何指定返回对象的类型? 我希望在ServerBean.java中的Java集合中添加类型会触发该操作,但事实并非如此。我还查看了是否应该在XML中执行某些操作,但事实并非如此。

0 个答案:

没有答案