我正在做一个 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" />
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 集成的更多信息。