Struts2学习笔记五

Action配置完了就该配置返回结果了,这样才能让它们关联起来哦

7.配置结果类型

       Struts2使用<result/>元素在struts.xml文件中进行结果配置,根据<result/>元素的位置不同,可以分为:

l         局部结果:将<result/>配置在<action/>中;

l         全部结果:将<result/>配置在<global-results/>中;

 

<result/>元素的有两个属性,分别是name属性和type属性,此外在<result/>元素中还可以配置<param/>元素,<param/>元素的name属性可以为locationparse这两个值,其中location指定了逻辑视图所对应的实际视图资源;而parse则指定是否允许在实际视图资源中使用OGNL表达式,parse默认值为true

如果在配置<result/>时没有指定location属性值,则<result/>自动将<result></result>之间的字符串值作为实际视图资源;如果没有指定name属性,则采用默认值success,如果没有指定type类型,则默认为dispatcher结果类型。

       如果一个Action里包含也全部结果同名的结果,则Action里的局部结果将会覆盖全局Action

 

8Struts2支持的结果类型

       Struts2支持多种结果类型,除了最常用的jsp页面外,也支持像VelocityFreeMarkerJasper等;Struts2的结果类型要求实现com.opensymphony.xwork.ResultStruts2struts-default.xml中配置了一系列默认的结果类型,其中dispatcher为默认的结果类型:

l         chainAction链式处理的结果类型;

l         chart:整合JFreeChart的结果类型;

l         dispatcher:用于JSP整合的结果类型;

l         freemarkerFreeMarker整合的结果类型;

l         httpheader:控制特殊的HTTP行为的结果类型;

l         jasperJasperReports整合的结果类型;

l         jsfJSF整合的结果类型;

l         redirect:直接跳转到其它URL的结果类型;

l         redirect-action:直接跳转到其它Action的结果类型;

l         stream:向浏览器返回一个InputStream

l         tiles:与Tiles整合的结果类型;

l         velocity:与Velocity整合的结果类型;

l         xslt:与XML/XSLT整合的结果类型;

l         plaintext:显示某个页面的原始代码的结果类型;

 

dispatcher结果类型与redirect结果类型的差别是转发和重定向的差别:重定向会丢失所有的请求参数、请求属性、Action的处理结果等,即是说redirect的效果就是重新产生一个新请求,其实系统内部是调用HttpServletResponsesendRedirect(String)方法来重定向资源的。

当一个Action处理结束后直接将请求重定向到另一个Action时需要使用redirect-action结果类型,并提供actionNamenamespace的值,其中actionName为重定向的Action名,namespace为重定向的Action所在的命名空间。

 

9.动态结果

       在前面的动态方法调用中已经提及到使用表达式来动态指定<result/>元素的实际视图资源,除了此种方法外,还可以使用${属性名}的方式来指定视图资源,这里的属性名就是对应Action实例里的属性,除了这种单属性名表达式的形式外,还可以使用完全的OGNL表达式,如${属性名.属性名.属性名……},示例如下:

       <action name=”demo” class=”com.demo.DemoAction” namespace=”/demo”>

              <result name=”error”>/error.jsp</result>

              <result name=”success” type=”redirect”>

                     EditAction.do?recoredId=${currentUser.userId}

</result>

       </action>

上述配置中使用${currentUser.userId}表达式来指定success后的视图资源,对于这样的表达式,要求在对应的DemoAction中包含currentUser属性,且currentUser属性必须包含userId属性,否则${currentUser.userId}的值将为null

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章