2007-10-11
我的struts2配置,间接实现零配置
所谓间接实现零配置,是指只要做些初始化的配置之后,在以后的开发中基本上不用再对每个Action做配置
struts.xml这样配置
struts.properties的配置:
然后写一个BaseAction:
这样其余的Action都可以直接继承BaseAction,不用再做任何配置
通过return render(target)转发到指定的jsp页面,从而间接实现零配置
URL:http://localhost:8080/workbench/User/test
struts.xml这样配置
<action name="*/*" method="{2}" class="workbench.web.actions.{1}Action">
<result name="custom">/view/{1}/${target}.jsp</result>
</action>
struts.properties的配置:
struts.objectFactory = spring struts.objectFactory.spring.autoWire = name struts.devMode = true struts.enable.DynamicMethodInvocation = false struts.action.extension = struts.enable.SlashesInActionNames = true
然后写一个BaseAction:
public abstract class BaseAction {
protected final String CUSTOM = "custom";
private String target;
protected final Log logger = LogFactory.getLog(getClass());
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
protected String render(String _target){
setTarget(_target);
return CUSTOM;
}
}
这样其余的Action都可以直接继承BaseAction,不用再做任何配置
通过return render(target)转发到指定的jsp页面,从而间接实现零配置
public class UserAction extends BaseAction{
private User user;
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String test(){
user = userService.get(1l);
return render("test");
}
}
URL:http://localhost:8080/workbench/User/test
评论
ericxu131
2008-03-19
全都用固定规则固定好 感觉有点ror的感觉
feigme
2008-02-12
<action name="identity_*_*" method="{1}" class="identityAction">
<result name="input">{2}.jsp</result>
<result>login_ok.jsp</result>
</action>
补充一下,用这种配置也可以解决验证后返回不同页面的问题
但是action的name就变得繁琐点
不知道这样有无隐患
<result name="input">{2}.jsp</result>
<result>login_ok.jsp</result>
</action>
补充一下,用这种配置也可以解决验证后返回不同页面的问题
但是action的name就变得繁琐点
不知道这样有无隐患
feigme
2008-02-12
kissbey 写道
涉及到校验的话没有input怎么返回,struts会报错的
我也是碰到这个问题
不知道楼主有什么解决
<result name="input">{1}.jsp</result>
kusoft
2008-01-31
我不太清楚,楼主为什么不打开struts.enable.DynamicMethodInvocation = true,难道打开这个参数,会有问题吗?
kissbey
2008-01-30
涉及到校验的话没有input怎么返回,struts会报错的
shim
2007-12-16
colin4k 写道
struts.xml这样配置
<action name="*/*" method="{2}" class="workbench.web.actions.{1}Action">
<result name="custom">/view/{1}/${target}.jsp</result>
</action>
struts.properties的配置:
struts.objectFactory = spring struts.objectFactory.spring.autoWire = name struts.devMode = true struts.enable.DynamicMethodInvocation = false struts.action.extension = struts.enable.SlashesInActionNames = true
URL:http://localhost:8080/workbench/User/test
跟着做了,结果不成功,Struts2的jar版本也是最新的。
不知道楼主能否把配制说详细些,如web.xml里的配制等,
最好能给个简单可运行的Demo了。
yyjn12
2007-12-04
struts2的热衷者们,我有个问题想请教一下.
在linux resin3 环境下,你们有没有遇到问题?
在linux resin3 环境下,你们有没有遇到问题?
absolute
2007-12-04
做验证好像就有问题了,楼主碰到过吗,你是怎么做的
colin4k
2007-11-20
jxd1976 写道
colin4k 写道
另外以上代码是经测试通过的,今天加上了事务的控制,自己写了个Interceptor
这个零配置不错,把事务控制的代码也贴上来,学习一下。
web根目录下的index.jsp怎么处理?
事务控制主要有以下几个步骤,
第一、TransactionInterceptor的部分代码
protected String doIntercept(ActionInvocation invocation) throws Exception {
String result = null;
PlatformTransactionManager transactionManager = (PlatformTransactionManager) BeanLoader
.getBean("transactionManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
def.setReadOnly(false);
TransactionStatus transactionStatus = transactionManager
.getTransaction(def);
try {
result = invocation.invoke();
transactionManager.commit(transactionStatus);
}
catch (Exception e) {
transactionManager.rollback(transactionStatus);
logger.error("action error,rollback transaction.");
throw e;
}
return result;
}
第二、定义用于事务的拦截器
<interceptor name="transactionInterceptor" class="TransactionInterceptor"> <param name="includeMethodsPrefix">act,deal</param> </interceptor>
includeMethodsPrefix参数用于定义以这些字符串开头的方法都采用事务控制。
第三、配置拦截器到Action上,这个就不用写了。
jxd1976
2007-11-12
colin4k 写道
另外以上代码是经测试通过的,今天加上了事务的控制,自己写了个Interceptor
这个零配置不错,把事务控制的代码也贴上来,学习一下。
web根目录下的index.jsp怎么处理?
z13585197077
2007-11-08
刚开始学Struts2,谢谢楼主,希望楼主以后多发点好帖
colin4k
2007-11-07
kusoft 写道
为什么不设置struts.enable.DynamicMethodInvocation = true,这样的话,不需要配置xml了
如果不配置xml,那拦截器怎么设置?全部用注解?那太繁琐了。
我觉得使用新技术不是为了用新技术而新技术,而是看是不是能提高效率。
colin4k
2007-11-07
zhyun29 写道
正在学习struts2,请问楼主struts.objectFactory.spring.autoWire这一项是什么意思?谢谢
这是定义struts2的action在注入业务逻辑类的时候使用那种方式匹配spring context中的对象,是基于名字匹配,如果设置成type,则是基于类型匹配
kusoft
2007-10-30
为什么不设置struts.enable.DynamicMethodInvocation = true,这样的话,不需要配置xml了
zhyun29
2007-10-30
正在学习struts2,请问楼主struts.objectFactory.spring.autoWire这一项是什么意思?谢谢
colin4k
2007-10-13
另外以上代码是经测试通过的,今天加上了事务的控制,自己写了个Interceptor
colin4k
2007-10-13
姜太公 写道
这个似乎有点问题吧,你的前提就是返回的全部是success的forward,这样太简单了点
你大概没有看清楚,返回的不是Success,返回的是"custom",并通过BaseAction里的属性target,指向
jsp
姜太公
2007-10-13
这个似乎有点问题吧,你的前提就是返回的全部是success的forward,这样太简单了点
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4095 次

- 详细资料
搜索本博客
最新评论
-
有没有人在struts2的acti ...
同意楼上的,action不应该重用,action实际应当是对应到一个页面的某个动 ...
-- by bukebushuo -
有没有人在struts2的acti ...
Action根本就不该重用。
-- by slaser -
有没有人在struts2的acti ...
colin4k 写道action当然不应该封装业务逻辑,但是action是con ...
-- by Andy_Fay -
有没有人在struts2的acti ...
我支持在多个Action中的调用中使用Action级的事务控制方法,如果仅仅是想 ...
-- by XMLDB -
有没有人在struts2的acti ...
和楼主有同样的问题. spring的声明事务在action中会出错. 关于ac ...
-- by ultra






评论排行榜