无法使用 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>