spring struts2 整合时,采用自动注解,找不到action问题解决办法

在搭传统ssh框架时,碰到一个令人无比头疼的问题;
当采用注解式(即零配置)配置spring bean时,发现action怎么也找不到

[img]http://dl2.iteye.com/upload/attachment/0101/3413/9e78bff3-f5f5-3067-98f6-4639f9e225b1.jpg[/img]

更诡异的是,通过使用InitializingBean接口,发现LoginAction确实是已经被spring加载了的,而且其他bean也都能够正确组装。

分析下后,觉得问题不在于spring没有加载bean,那是不是struts2配置的问题呢?

我struts2的配置(部分)如下:


<action name="login" class="LoginAction">
<result name="teacher">/index.jsp</result>
<result name="fail">/loginFailed.html</result>
</action>


当url为/login时,struts2会向spring索取名字为"LoginAction"的action

两边线索都向中间聚拢,就是在这接头点出了问题:

package com.jyzz.tlms.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.jyzz.tlms.logic.LoginLogic;

@Component
public class LoginAction extends CommonAction{

/**
*
*/
private static final long serialVersionUID = -6851791110535117944L;

@Autowired
private LoginLogic ll;

public String execute() throws Exception{
ll.doSth();
return "teacher";

}

}



这里面作为一个菜b,不明白@Component后,spring是如何命名这个类的id的,如果想当然的以为是"LoginAction"的话(受@Autowired误导),那就是这个bug的来源了


所以,在这,为了解决这个bug,只要

@Component("LoginAction")

即显式的指明这个action的id即可。


也希望有大神能对@Component不显式指明id的情况下,spring默认给的id是什么这个问题做点解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值