在 Struts 2 中使用 属性 标签显示来自数据库的数据

Display data from database with the property tag in Struts 2

当我想使用 Struts 2 个标签显示来自数据库的数据时:

我的 JSP 有问题,它没有显示任何内容。虽然在控制台中我得到了结果

我的Actionclass:

public class ObjectifAction extends ActionSupport implements ModelDriven<Objectif> {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
        
    Objectif objectif = new Objectif();
    List<Objectif> objectifs = new ArrayList<Objectif>(); 
    ObjectifDAO objdao= new ObjectifDAO();
    
    //objdao.countTotal();
    
    public String afficher()
    {
        int i=0,taille;
       objectifs = objdao.afficher();
       taille=objdao.countTotal();
       for(i=0;i<taille;i++){
           
           System.out.println(objectifs.get(i).getDescription());
           
       }
       return "success";
    }
        
    public Objectif getObjectif() {
        return objectif;
    }

    public void setObjectif(Objectif objectif) {
        this.objectif = objectif;
    }

    public List<Objectif> getObjectifs() {
        return objectifs;
    }

    public void setObjectifs(List<Objectif> objectifs) {
        this.objectifs = objectifs;
    }

    public ObjectifDAO getObjdao() {
        return objdao;
    }

    public void setObjdao(ObjectifDAO objdao) {
        this.objdao = objdao;
    }

    @Override
    public Objectif getModel() {
        // TODO Auto-generated method stub
        return objectif;
    }
    
}

我的 JSP 页面:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<table>
<tr>
<td>id</td>

</tr>
<s:iterator value="objectifs" var="o">  
<tr>
<td><s:property value="#o.id_objectif_metier"/></td>
       
</tr>
</s:iterator>   
</table>

</body>
</html>

没有显示任何内容,请帮忙!

这是我的 struts.xml 文件:

我认为 JSP 页面有误。它只显示没有数据的列名

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

<!-- <constant name="struts.action.extension" value="xhtml,,xml,json,action"/> -->

<package name="rest" extends="rest-default" namespace="/rest">
</package>
<package name="default" extends="struts-default, json-default"
namespace="/">

<interceptors>
    <interceptor class="ma.interceptors.LoginInterceptor"
        name="loginInterceptor">
    </interceptor>
    <interceptor-stack name="loginStack">
        <interceptor-ref name="loginInterceptor" />
        <interceptor-ref name="defaultStack">
            <param name="exception.logEnabled">true</param>
            <param name="exception.logLevel">ERROR</param>
        </interceptor-ref>
    </interceptor-stack>
</interceptors>

<global-results>
    <result name="login">index.jsp</result>
    <result name="error">errors/error.jsp</result>
</global-results>

<action name="Connect"  class="ma.actions.UtilisateurAction"  method="Connect">
    <result name="ADMIN" type="redirect">admin</result>

    <result name="input" type="redirect">index.jsp</result>
</action>

<action name="admin">
    <interceptor-ref name="loginStack" />
    <result>/WEB-INF/admin/index.jsp</result>
</action>

<action name="listerObjectif" class="ma.actions.ObjectifAction" method="afficher">
    <interceptor-ref name="loginStack" />
    <result name="success" type="redirect">objectif</result>
</action>

<action name="objectif">
    <interceptor-ref name="loginStack" />
    <result>/WEB-INF/admin/objectif/objectif.jsp</result>
</action>

</package>

我认为这里没有错误?

Struts 用于执行一个动作,然后 return 一个 JSP 和结果。但是如果您想重定向到另一个 URL,则使用 redirect 结果类型。这样做会丢失 JSP 中用于在控件中填充数据的所有内容。更改

<action name="listerObjectif" class="ma.actions.ObjectifAction" method="afficher">
    <interceptor-ref name="loginStack" />
    <result>/WEB-INF/admin/objectif/objectif.jsp</result>
</action>