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 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀