六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 30|回复: 0

struts2 的result

[复制链接]

升级  72%

46

主题

46

主题

46

主题

秀才

Rank: 2

积分
158
 楼主| 发表于 2013-1-23 02:28:00 | 显示全部楼层 |阅读模式
chain

    用来处理Action链

    com.opensymphony.xwork2.ActionChainResult

dispatcher

    用来转向页面,通常处理JSP

    org.apache.struts2.dispatcher.ServletDispatcherResult

freemaker

    处理FreeMarker模板

    org.apache.struts2.views.freemarker.FreemarkerResult

httpheader

    控制特殊HTTP行为的结果类型

    org.apache.struts2.dispatcher.HttpHeaderResult

redirect

    重定向到一个URL

    org.apache.struts2.dispatcher.ServletRedirectResult

redirectAction

    重定向到一个Action

    org.apache.struts2.dispatcher.ServletActionRedirectResult

stream

    向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据

    org.apache.struts2.dispatcher.StreamResult
<result name="success" type="stream">
   <param name="contentType">image/jpeg</param>
   <param name="inputName">imageStream</param>
   <param name="contentDisposition">filename="document.pdf"</param>
   <param name="bufferSize">1024</param>
</result>


velocity

    处理Velocity模板

    org.apache.struts2.dispatcher.VelocityResult

xslt

    处理XML/XLST模板

    org.apache.struts2.views.xslt.XSLTResult

plainText

    显示原始文件内容,例如文件源代码

    org.apache.struts2.dispatcher.PlainTextResult


另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。

在struts-default.xml文件中已经有了对于所有类型Result的定义:


从上述代码中可以看出在不指定Result类型的时候使用dispatcher类型。


我们也可以定义多个不同的Result

<action name="Hello">

<result>/hello/Result.jsp</result>
<!-- name="error" 可以自定义-->
<result name="error">/hello/Error.jsp</result>

<result name="input">/hello/Input.jsp</result>

</action>

有些时候我们需要一个定义在全局的Result,这个时候我们可以在package内部定义全局的Result,例如:

<global-results>

<result name="error">/Error.jsp</result>

<result name="invalid.token">/Error.jsp</result>

<result name="login" type="redirect-action">Logon!input</result>

</global-results>

动态返回结果

有些时候,只有当Action执行完璧的时候我们才知道要返回哪个结果,这个时候我们可以在Action内部定义一个属性

,这个属性用来存储Action执行完璧之后的Result值,例如:

private String nextAction;

public String getNextAction() {

return nextAction;

}

在strutx.xml配置文件中,我们可以使用${nextAction}来引用到Action中的属性,通过${nextAction}表示的内容来

动态的返回结果,例如:

<action name="fragment" class="FragmentAction">

<result name="next" type="redirect-action">${nextAction}</result>

</action>
上述Action的execute方法返回next的时候,还需要根据nextAction的属性来判断具体定位到哪个Action。


在strutx.xml配置文件中,我们可以使用method=""来设置调用类的哪个方法,这样就可以在一个JAVA类中使用不同的

方法来实现不同的功能,就无需每个功能写一类了,例如:
<action name="fragment" class="FragmentAction" method="add">
<result>/success.jsp</result>
</action>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表