Action的主要功能是提供从请求中取得参数的值,转化成相应的模型,在将模型传递给执行业务操作的对象。
<action name="register" class="example.register.RegisterAction" >
<result name="success" type="dispatcher">
<param name="location">/register-result.jsp</param>
</result>
<interceptor-ref name="params"/>
</action>
<interceptor-refname="params"/>,interceptor-ref标签设置这个Action用到的拦截器,"params"引用的是配置文件中的<interceptor name="params" class="com.opensymphony.xworkinterceptor.ParametersInterceptor"/>这个拦截器将在Action调用execute()方法执行之前调用,作用是将request请求的参数通过表达式语言设置到相应Action的模型里。
Action根据FormBean的不同可以分为二类:
一类是Field-Driven(字段驱动的)Action
Action将直接用自己的字段来充当FormBean的功能,可以直接用域对象作为Action的字段。
二类是Model-Driven(模型驱动的)Action
他很想Struts的FormBean,但在webwork中,只要通过Java对象就可以充当模型部分。Model-Driven(模型驱动的)Action要求我们的Action实现com.opensymphony.xwork.ModelDriven接口,它有一个方法:Object getModel();我们用这个方法返回我们的模型对象。
采用模型对象比较重要的一点是在Action的配置文件Xwork.xml中要配置模型拦截器model-driven,他的作用是将模型对象保存到值堆栈中。
<action name="registerModel" class="example.register.RegisterActionModel">
<result name="success" type="dispatcher">
<param name="location">/register-result-model.jsp</param>
</result>
<interceptor-ref name="model-driven"/>
<interceptor-ref name="params"/>
</action>