上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.6.8 动态结果
动态结果的意思是指配置结果时,指定实际的视图资源时使用了表达式语法,通过这种语法可以允许Action处理完用户请求后,动态转入实际的视图资源。
前面介绍Action配置时,可以在Action的name属性中使用通配符,在class属性或method属性中使用表达式。通过这种方式,我们可以根据请求来动态决定 Action 的处理类,以及动态决定处理方法。除此之外,我们也可以在配置<result .../>元素时使用表达式语法,从而允许根据请求动态决定实际资源。
看下面的配置片段。
<action name="crud_*" class="lee.CrudAction" method="{1}">
<result name="input">/WEB-INF/content/input.jsp</result>
<result>/WEB-INF/content/{1}.jsp</result>
</action>
上面的配置片段有一个名字为 crud_*模式的 Action,这个 Action 可以处理所有匹配crud_*.action 模式的请求。例如有一个 crud_create.action 的请求,系统将调用 lee.CrudAction类的create方法来处理用户请求。当Action 处理用户请求结束后,配置了两个结果:当处理结果为input字符串时,系统将转到/WEB-INF/content/input.jsp页面;当处理结果为success字符串时,系统将转入 create.jsp 页面——这个视图资源是动态生成的,因为 crud_create 匹配crud_*模式时,第一个星号(*)的值是create,因此/{1}.jsp里的表达式的值为create,即对应/WEB-INF/content/create.jsp资源。
与配置class属性和method属性相比,配置<result .../>元素时,还允许使用OGNL表达式,这种用法允许让请求参数来决定结果。