无法使用 Struts 实施显示标签
Unable to implemet Display tag with Struts
我正在使用 Hibernate 和 struts 框架来开发基于 Web 的应用程序。
我想使用显示标签显示有关某个对象的一些信息,该对象已映射,我可以从数据库中提取它。我还可以从数据库中提取该对象的 collection/list,我设置集合并将其提供给显示标签,但在执行后.. 抛出异常告诉我 display:column
中的属性未知,我检查了 java bean 并且一切正常..
代码如下:
public class ReadToolsList extends ActionSupport implements SessionAware {
private List TestingToolsList = null;
Map Session;
ReadToolsListLogic RDT = new ReadToolsListLogic();
public String toolsList() {
setTestingToolsList(RDT.readToolsLogic());
return Action.SUCCESS;
}
public List getTestingToolsList() {
return TestingToolsList;
}
public void setTestingToolsList(List testingToolsList) {
TestingToolsList = testingToolsList;
}
@Override
public void setSession(Map arg0) {
// TODO Auto-generated method stub
}
public Map getSession() {
return Session;
}
}
这是 jsp 页面中的代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test Tools List</title>
</head>
<body >
<h1>In side Tools List</h1> <br> <br>
<display:table id="data" name="TestingToolsList" requestURI="/ToolList.action" pagesize="3" export="true" >
<display:column property="Tool_Name" title="Name" sortable="true"/>
</display:table>
</body>
</html>
这里是 struts.xml 中的代码:
<struts>
<package name="module-Authentication" extends="struts-default">
<action name="authentication" class="TTI.Presenstation.AuthenticationAction"
method="Authentication">
<result name="admin" type="chain">ToolList</result>
<result name="user">/View/success.jsp</result>
<result name="error">/View/error.jsp</result>
</action>
</package>
<package name="Admin-Pages" extends="struts-default">
<action name="ToolList" class="TTI.Presenstation.ReadToolsList"
method="toolsList">
<result name="success">/View/Admin_Pages/Tools_List.jsp</result>
<result name="error">/View/error.jsp</result>
</action>
</package>
</struts>
A getter 必须以小写字母开头,所以 getTestingToolsList
= testingToolsList
<display:table id="data"
name="testingToolsList"
requestURI="/ToolList.action"
pagesize="3"
export="true"
uid="data" > <!-- also add the "uid" attribute -->
与 Tool_name
相同,应该是 tool_name
。
<display:column property="tool_Name" title="Name" sortable="true"/>
也就是说,它也应该是驼峰式:toolName
。我们最近发现这不仅是一个好习惯,而且 it is mandatory in some cases.
<display:column property="toolName" title="Name" sortable="true"/>
如果您需要从列元素中访问值,您可以使用 #attr
从特定范围检索它们:
<display:column title="Name" sortable="true">
<s:property value="#attr.data.toolName" />
</display:column>
我正在使用 Hibernate 和 struts 框架来开发基于 Web 的应用程序。
我想使用显示标签显示有关某个对象的一些信息,该对象已映射,我可以从数据库中提取它。我还可以从数据库中提取该对象的 collection/list,我设置集合并将其提供给显示标签,但在执行后.. 抛出异常告诉我 display:column
中的属性未知,我检查了 java bean 并且一切正常..
代码如下:
public class ReadToolsList extends ActionSupport implements SessionAware {
private List TestingToolsList = null;
Map Session;
ReadToolsListLogic RDT = new ReadToolsListLogic();
public String toolsList() {
setTestingToolsList(RDT.readToolsLogic());
return Action.SUCCESS;
}
public List getTestingToolsList() {
return TestingToolsList;
}
public void setTestingToolsList(List testingToolsList) {
TestingToolsList = testingToolsList;
}
@Override
public void setSession(Map arg0) {
// TODO Auto-generated method stub
}
public Map getSession() {
return Session;
}
}
这是 jsp 页面中的代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test Tools List</title>
</head>
<body >
<h1>In side Tools List</h1> <br> <br>
<display:table id="data" name="TestingToolsList" requestURI="/ToolList.action" pagesize="3" export="true" >
<display:column property="Tool_Name" title="Name" sortable="true"/>
</display:table>
</body>
</html>
这里是 struts.xml 中的代码:
<struts>
<package name="module-Authentication" extends="struts-default">
<action name="authentication" class="TTI.Presenstation.AuthenticationAction"
method="Authentication">
<result name="admin" type="chain">ToolList</result>
<result name="user">/View/success.jsp</result>
<result name="error">/View/error.jsp</result>
</action>
</package>
<package name="Admin-Pages" extends="struts-default">
<action name="ToolList" class="TTI.Presenstation.ReadToolsList"
method="toolsList">
<result name="success">/View/Admin_Pages/Tools_List.jsp</result>
<result name="error">/View/error.jsp</result>
</action>
</package>
</struts>
A getter 必须以小写字母开头,所以 getTestingToolsList
= testingToolsList
<display:table id="data"
name="testingToolsList"
requestURI="/ToolList.action"
pagesize="3"
export="true"
uid="data" > <!-- also add the "uid" attribute -->
与 Tool_name
相同,应该是 tool_name
。
<display:column property="tool_Name" title="Name" sortable="true"/>
也就是说,它也应该是驼峰式:toolName
。我们最近发现这不仅是一个好习惯,而且 it is mandatory in some cases.
<display:column property="toolName" title="Name" sortable="true"/>
如果您需要从列元素中访问值,您可以使用 #attr
从特定范围检索它们:
<display:column title="Name" sortable="true">
<s:property value="#attr.data.toolName" />
</display:column>