我正在尝试更新一些旧的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方面的经验有限,但是会尝试包括我认为相关的内容。
ArrayList
至ArrayList<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中执行某些操作,但事实并非如此。