为什么动作类在 Struts 2 中没有执行

问题描述 投票:0回答:1

我正在做一个 Spring 和 Struts 2 集成应用程序。 JSP 显示正常,但它没有从数据库带来任何数据。登录到工作正常的应用程序,然后它需要从数据库中获取数据并将其显示在网站上(它不工作)。下面给出的是

struts.xml
EmpAction
appcontext.xml
代码。

    <struts>
        <package name="Struts2SpringDemo" extends="struts-default">
            
            <action name="login" class="loginActionBean">
                <result name="input">LoginForm.jsp</result>
                <result name="success" type="chain">emp</result>
                <result name="error">LoginError.jsp</result>
            </action>
            
            <action name="emp" class="empActionBean">
                <result name="success">ViewForm.jsp</result>
            </action>       
            
            
        </package>
    </struts>

EmpAction.java
有以下方法:

    public String getEmployees(Model m) {
        List<Emp> list=empDAO.getEmployees();  
        m.addAttribute("list",list);        
        //System.out.println(list.toString());
        if (list.isEmpty()) {
            return ERROR;
        } else {
            return SUCCESS;  
        }     
    }

应用程序上下文有以下代码:

    <bean id="loginActionBean" class="net.codejava.web.LoginAction">
            <property name="userDAO" ref="userDAO" />
        </bean>         
        <bean id="userDAO" class="net.codejava.web.UserDAO" />  
        <bean id="empActionBean" class="net.codejava.web.EmpAction">
            <property name="empDAO" ref="empDAO" />
        </bean>     
        

    <bean id="empDAO" class="net.codejava.web.EmpDAO" />
java spring jsp struts2 struts
1个回答
0
投票

它没有执行操作类,因为您的操作类没有实现

Action
。您用于操作的方法未与 Struts 操作配置映射。创建动作类的最佳方法是扩展
ActionSupport
类。

public class EmpAction extends ActionSupport {

   private EmpDAO empDAO;

   public void setEmpDAO(EmpDAO empDAO){
      this.empDAO = empDAO;
   }

   @Override
   public String execute() throws Exception {
    List<Emp> list=empDAO.getEmployees();  
    ValueStack vs = ActionContext.getContext().getValueStack(); 
    vs.set("list",list);        
    //System.out.println(list.toString());
    if (list.isEmpty()) {
        return ERROR;
    } else {
        return SUCCESS;  
    }     
  }
}

此外,由于您的操作 bean 由 Spring 管理,因此您应该阅读有关 Struts 与 Spring 集成的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.