webwork2学习笔记1(2006-2-13)

1. 当没有定义result中的type时,会默认使用webwork-default.xml中的type

2. 可以为同一个action类定义不同的名字,以便为不同的名字配置不同的拦截器。

3. 当使用同一个类充当多个action时,需要在配置文件中定义要执行的方法,否则会默认执行execute方法(利用反射机制),如:

<action name="editJob" class="org.quartz.ui.web.action.job.CreateJob" method="edit">

           <result name="input" type="velocity">/WEB-INF/vm/createJob.vm</result>

           <result name="success" type="velocity">/WEB-INF/vm/createJob.vm</result>

           <result name="error" type="velocity">/WEB-INF/vm/editDefinition.vm</result>

       </action>

注意其中的method=”edit”

Ps:我觉得这点比struts要好一点,最大限度做到代码重用。例如一般的CRUD操作可以放在一个文件中完成。

同样可以使用另外一种机制调用action中的指定名称的方法,例如上面的配置可以使用

http://localhost:port/context/editJob!edit.action这样的url连接去调用CreateJobAction中的

edit()方法,只不过这种调用方式安全性较差。

4. 用户自定义参数

可以在配置文件中为某个action自定义参数,如:

<action name="service" class="com.example.WebServiceAction">

<result name="success">/success.jsp</result>

<param name="url">http://somesite.com/service.wsdl</param>

<param name="timeout">30</param>

</action>

同样需要在WebServiceAction中为urltimeout两个变量设置javabean格式的set方法,如public void setUrl()…,这样,在action执行时会自动将配置文件中的value映射到action中的变量最中。

5. 可以在webwork.xml中定义global-result,这样在action-mapping中如果没有定义result type则会默认使用global-result中的typeP79

6. 当需要两个或多个interceptors的时候,可以将这些interceptors加入到一个stack,这样在action-mapping中直接调用stack,即可实现多个拦截器,如:

<package name="default" extends="webwork-default">

<interceptors>

<interceptor name="timer" class=".."/>

<interceptor name="logger" class=".."/>

<interceptor-stack name="myStack">

<interceptor-ref name="timer"/>

<interceptor-ref name="logger"/>

</interceptor-stack>

</interceptors>

<action name="login"

class="org.hibernate.auction.web.actions.users.Login">

<interceptor-ref name="myStack"/>

<result name="input">login.jsp</result>

<result name="success"

type="redirect">/secure/dashboard.action</result>

</action>

</package>

7. 当在配置文件中指定了默认的interceptors-stack时,如果在某个action-mapping中另外定义了一个interceptor-ref时,则在调用该action时,只会调用action-mapping中的interceptor,而不会再去调用default-interceptor-ref。这两个interceptors不能累加使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值