我们在玩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年的。