JavaScud | Forum | JIRA | Blog |
  Dashboard > StrutsImprovement > ... > rapid-framework > struts1 struts2 zero configuration
  StrutsImprovement Log In View a printable version of the current page.  
  struts1 struts2 zero configuration
Added by badqiu, last edited by badqiu on Jul 16, 2008  (view change)
Labels: 
(None)

struts1,struts2中存在的问题

在配置文件中写Action执行完跳转的路径,那么在编写Action Java代码的时候还需要切换至配置文件才能知道action转向那个页面,直接写在Action中不好么?

依照这种并且结合struts1,struts2的零配置,可以实现类似ruby on rails的基于url确定要调用的action及方法,已经在多个项目中应用,也没发现问题

struts1零配置

1.使用strus的wildcard mapping,提供类似rails的基于URL确定调用的Action与method

  • 使用MappingDispathAction与扩展的DynamicModuleConfig,DynamicModuleConfig能够使用name属性作为formBean class的定义,以下为struts配置文件的全部
    <action path="/example/*/*"
    	type="example.action.{1}Action"
    	name="example.form.{1}Form" scope="request"
    	validate="false" parameter="{2}" attribute="{1}Form">
    </action>

    第一个*为{1},代表需要调用的Action,每二个*为{2},代表我们要调用的action方法.
    如:/example/User/save,则与下面等价

    <action path="/example/User/save"
    	type="example.action.UserAction"
    	name="example.form.UserForm" scope="request"
    	validate="false" parameter="save" attribute="UserForm">
    </action>
  • 通过在Action的方法的直接返回ActionForward
    而在Java Action代码中,我们直接使用new ActionForward()返回,在实际项目中使用些方法并末发现
    return new ActionForward("/example/user/list.jsp");

struts2零配置编程

为Struts2增加了一种返回类型,直接通过action方法的返回值确定要返回的页面.

<result-types>
     <result-type name="direct" class="javacommon.struts2.dispatcher.DirectResult"/>
</result-types>

配合struts2通符符,实现零配置,以下为配置文件action配置的全部

<package name="default" namespace="/demo" extends="custom-default">  
    <action name="*/*" method="{2}" class="com.kingsoft.demo.action.{1}Action">  
       <result name="*" type="direct">通过Action直接返回</result>  
    </action>        
</package>

实现forward请求的java代码

/**进入更新页面*/  
public String edit() {   
    blog = (Blog)blogManager.getById(id);   
    return "/demo/Blog/edit.jsp";   
}

实现redirect的做法是,前面增加了一个"!"号

/**保存更新*/  
public String update() {   
    blogManager.update(this.blog);   
    return "!/demo/Blog/list.action";   
}
Site running on a free Atlassian Confluence Open Source Project License granted to WebWork China. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.3 Build:#808 May 29, 2007) - Bug/feature request - Contact Administrators