struts2教程:5、Action中result的各种转发类型

来源:互联网 发布:音效制作软件 编辑:程序博客网 时间:2024/04/30 13:55

Actionresult的各种转发类型

<action name="helloworld" class="cn.itcast.action.HelloWorldAction">

  <result name="success">/WEB-INF/page/hello.jsp</result>

</action>

result配置类似于struts1中的forward,struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值,是内部请求转发) redirect 浏览器重定向一个路径,不能访问到WEB-INF下的jsp,redirectActionplainText。例:type=“redirect

result中还可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性。如下:

<result type="redirect">/view.jsp?id=${id}</result>

如果id传递的是中文要进行UTF-8编码,·要用到URLEncode类进行编码。如果以GET方式传递中文的话tomcat会把中文解析成ISO8859-1的格式,也就是乱码,我们要现获得ISO8859-1编码数据后在进行UTF-8格式·用URLDecoder解析。

下面是redirectAction结果类型的例子,如果重定向的action中同一个包下:

这个是重定向到某个action

<result type="redirectAction">helloworld</result>

如果重定向的action在别的命名空间下:

<result type="redirectAction">

  <param name="actionName">helloworld</param>

  <param name="namespace">/test</param>

</result>

redirectAction其实是一个类,这个类有两个属性ActionName,Namespace

plaintext:显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们可以使用此类型。

<result name="source" type="plainText ">

  <param name="location">/xxx.jsp</param>

  <param name="charSet">UTF-8</param><!--指定读取文件的编码 -->

</result>

多个Action共享一个视图--全局result配置

当多个action中都使用到了相同视图,这时我们应该把result定义为全局视图。struts1中提供了全局forward,struts2中也提供了相似功能:

<package ....>

  <global-results>

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

  </global-results>

</package>

补充: 

可以为一个类配置配置多个action,但还action的name不能相同。

如果要求全局视图被多个包使用,需要配置包之间的继承,最要是建立一个base包,namespace不配置为默认的命名空间,全局视图定义其中,其他的包继承base包即可访问到全局视图。

原创粉丝点击