首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

小弟我的struts2配置,间接实现零配置

2012-10-25 
我的struts2配置,间接实现零配置所谓间接实现零配置,是指只要做些初始化的配置之后,在以后的开发中基本上

我的struts2配置,间接实现零配置
所谓间接实现零配置,是指只要做些初始化的配置之后,在以后的开发中基本上不用再对每个Action做配置

struts.xml这样配置

<action name="*/*" method="{2}" name="code">struts.objectFactory = springstruts.objectFactory.spring.autoWire = namestruts.devMode = truestruts.enable.DynamicMethodInvocation = falsestruts.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/testprotected 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" name="code"><action name="*/*" method="{2}" name="code">struts.objectFactory = springstruts.objectFactory.spring.autoWire = namestruts.devMode = truestruts.enable.DynamicMethodInvocation = falsestruts.action.extension = struts.enable.SlashesInActionNames = true



URL:http://localhost:8080/workbench/User/test

跟着做了,结果不成功,Struts2的jar版本也是最新的。
不知道楼主能否把配制说详细些,如web.xml里的配制等,
最好能给个简单可运行的Demo了。            <result name="input">{2}.jsp</result>
            <result>login_ok.jsp</result>
</action>
补充一下,用这种配置也可以解决验证后返回不同页面的问题
但是action的name就变得繁琐点
不知道这样有无隐患
19 楼 ericxu131 2008-03-19   全都用固定规则固定好 感觉有点ror的感觉 20 楼 sheqiguo 2008-04-03   学习学习学习

热点排行