zybzhen 2008-11-11 10:05
浏览 516
已采纳

struts2 BaseAction该如何写

我们在玩struts1的时候,通常都会 extends Action 然后写一个public void setServlet(ActionServlet actionServlet) {
this.managerFacade = (ManagerFacade) wac.getBean("managerFacade");}

每个action都继承这个action,省去了每个action都得setDAO的代码。

这样的功能 在struts2中该如何实现呢?

[b]问题补充:[/b]
大家回答的有点太深奥了
没看懂(文化程度有限,高中都没读过)

说struts2和spring天然 结合
是什么概念?

我用了spring,也用了hibernate

用了spring Bean工厂

我的action和daoImpl 在applicationContext.xml都有配置

是不是 我的action中可以直接拿到dao对像,而不用 在写setdao了?

比如我的loginAction,我在spring中有一个userdao
我在loginAction中是不是可以 直接使userdao中的方法,不用setdao?
如何搞?
[b]问题补充:[/b]
to:上一站,火星

我的spring配置文件是这样的

<bean id="userDAO" class="user.DAOImpl"
<bean id="loginAction" class="com.LoginAction

我struts配置文件
<action name="loginAction class="loingAction"

我的配置文件如何改 才能类型注入,
我的action中怎么直接使dao中的方法
[b]问题补充:[/b]
我的LoginAction
public class LoginAction extends ActionSupport{

private static final long serialVersionUID = 7592871230236282753L;
private ManagerFacade managerFacade; 
private String userId;
private String userPassword;

@SuppressWarnings("unchecked")
public String execute(){
    String status = "success";
    User user = null;
    if (!"".equals(this.getUserId()) && null != this.getUserPassword()){
         user = managerFacade.getUserByUserId(userId);
    }

}

怎程序运行到managerFacade.getUserByUserId(userId);这句就报错。
空指针错误。
可能是哪里出的问题?
[b]问题补充:[/b]
public void setManagerFacade(ManagerFacade managerFacade) {
this.managerFacade = managerFacade;
}
写了set方法。
[b]问题补充:[/b]
cats_tiger 写得4条中,只有第3条我没看懂。

我这样写的。


我在struts配置中用的是beanid

可是我 用了报告必须写ref
我不知道ref和name都应该写啥。
是都写 dao的名字吗?
[b]问题补充:[/b]
感谢cats_tiger。搞定了。
没有分了,不能在发贴子问我的login不成功的问题。

只能在这里问了。

为啥有些时候 我提示登录请求,压根就没有进入到action,直接提示我,用户名或密错误呢?
public class LoginAction extends ActionSupport{

private static final long serialVersionUID = 7592871230236282753L;
private ManagerFacade managerFacade; 
private static String userId;
private static String userPassword;

@SuppressWarnings("unchecked")
public String execute() throws Exception{
    String status = "success";
    User user = null;
    if (!"".equals(this.getUserId()) && null != this.getUserPassword()){
         user = managerFacade.getUserByUserId(userId);
    }
    if (validateUser(user,this.getUserPassword())){
        ActionContext.getContext().getSession().put(Constant.SESSION_USER_KEY, user);//将登录的用户信息存入到session中
        ActionContext.getContext().getSession().put(Constant.SESSION_USER_PERMISSION,permissionList );
        status = "success";
    }else{
        addFieldError("userPassword",getText("login.error"));
        status = "input";
    }
    return status;
}

我的loginAction代码在此。省略了 getter/setter.

[b]问题补充:[/b]
写完 scope="prototype"之后报告这个错误。
Attribute "scope" must be declared for element type "bean".
而且myeclipse也把scope标红了。

把session那段代码删掉,删掉发布,重起计算机,在起tomcat
也有这个问题。

[b]问题补充:[/b]
我用的是spring2.5.5
这么一问,我仔看了一下,怎我的spring.jar 里的class文件都04年的。

  • 写回答

19条回答 默认 最新

  • catstiger 2008-11-11 14:41
    关注

    2.0以后就支持了,看看xml对吗?
    [code="xml"]
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

    [/code]
    或者:
    [code="xml"]
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
    default-autowire="byName" default-lazy-init="true">

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(18条)

报告相同问题?

悬赏问题

  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页