Struts2 Result

Struts2支持多种视图显示,像JSP,freemarker,Velocity,甚至是图表等丰富的视图,这些全靠Result接口来实现的。

Result是架起Action到View的桥梁(引1)

具体的视图,有一个对应的Result实现类,来执行视图。如ServletDispatcherResult,一般是用来转发到JSP页面的,其中包含处理Request转发到JSP的操作。

            if (!insideActionTag && !response.isCommitted() && (request.getAttribute("javax.servlet.include.servlet_path") == null)) {
                request.setAttribute("struts.view_uri", finalLocation);
                request.setAttribute("struts.request_uri", request.getRequestURI());

                dispatcher.forward(request, response);
            } else {
                dispatcher.include(request, response);
            }
 

Result的职责主要有:

1.封装跳转逻辑

2.准备显示数据

3.控制输出行为

每种reult-type 对应一个Result的一个实现类

<result-types>

    <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>

    <result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>

    <result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>

    <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>

    <result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>

    <result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>

    <result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>

    <result-type name="httpheader" class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/>

    <result-type name="stream" class="com.opensymphony.webwork.dispatcher.StreamResult"/>

    <result-type name="plaintext" class="com.opensymphony.webwork.dispatcher.PlainTextResult" />

</result-types>
 

引1:忘记李刚,一步一步跟我学Struts2 —— Result机制,让视图更丰富

引2:Struts2中的Result类型应用(action...etc跳转)

猜你喜欢

转载自cuillgln.iteye.com/blog/1706335