您的位置:首页 > 编程语言 > Java开发

struts2.2.1用注解spring用XML整合,两框架整合问题!

2012-05-14 18:43 615 查看
前两天碰到一问题,我通过Spring的配置文件往action中的BIZ对象注入,Tomcat启动时我单步跟进已经是已经注入成功了!可之后再通过页面去访问,到Action时,它的值确为空了!很明显在调用struts2的Action的时后没有再去问spring拿Action,可我明明在struts.xml加了<constant name="struts.objectFactory" value="spring" />,这句表示你需要struts2的action对象时,它就会去spring中找!

可是通过页面访问Action它为什么里面的值是空呢?后来我跟进org.springframework.beans.factory.ObjectFactory看了下,发现它是找不到action了,因此它给了spring自已认为的默认值,也就是 "org.yyc.actions.OrgnizationAction" 但是这个是没有任何注入的!

<bean id="orgaction" class="org.yyc.actions.OrgnizationAction">
<property name="orgBiz" ref="OrgBiz"></property>
</bean>


那么如何让它找到的已经注入了BIZ层的action呢?

要改成下面这样!

<bean id="org.yyc.actions.OrgnizationAction" class="org.yyc.actions.OrgnizationAction">
<property name="orgBiz" ref="OrgBiz"></property>
</bean>


注意这里的ID也改成Action的路径!

我的Action代码如下!

package org.yyc.actions;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.yyc.biz.OrgBiz;
import org.yyc.entity.Orgnization;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

@ParentPackage(value="struts-default")
@Namespace(value="/")
@Controller
@Results({
@Result(name="SUCCESS",location="org/index.jsp")
})
public class OrgnizationAction{

public OrgnizationAction(){
System.out.println("aaaaaaa");
}
/**
* list得到的部门信息集合
*/
private List<Orgnization> orglist = null;
/**
* DAO层对象,通过spring注入进来
*/
private OrgBiz OrgBiz;

/**
* action方法
*/
public String execute() throws Exception {
System.out.println("bbbbbbb");
return "SUCCESS";
}
/**
* 查询得部门信息的方法
*/
@Action(value="bbb")
public String findOrg(){
System.out.println(OrgBiz);
this.orglist = OrgBiz.findBizOrg();
for (Orgnization org : orglist) {
System.out.println(org.getName());
}
return "SUCCESS";
}
/**
*	GET  SET 方法
* @return
*/
public List<Orgnization> getOrglist() {
return orglist;
}

public OrgBiz getOrgBiz() {
return OrgBiz;
}

public void setOrgBiz(OrgBiz orgBiz) {
OrgBiz = orgBiz;
}

public void setOrglist(List<Orgnization> orglist) {
this.orglist = orglist;
}

}


那么现在调用action的路径如下!
http://localhost:8080/项目名/bbb.action
这样就可以成功的访问到action了,主要的就是spring中配置action的时后,ID也换成后面的action类路径!

要还是不行的话加群:178675289
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐