Struts2学习进阶(基础篇五)——选择结果

Struts2学习进阶(基础篇五)——选择结果
    说明:本文翻译自struts自带的doc,路经为:struts-2.0.8-all\struts-2.0.8\docs\docs\selecting-results.html

    在编写Action这一章节中,我们创建了一个Logon类来测试输入。在本章中,我们将使这个测试的结果起作用。

一.             选择一个“Input”结果

     在一个Action执行一个请求后,一个提供用来作为这个请求回应的结果被选择。这个结果可以简单的定向到一个HTML页面、一个JSP页面、一个FreeMaker或一个Velocity模板、或者这个结果可能构造一个PDF或某些更加复杂的输出(例如JasperReports)。在一个action映射中可能有多个可选的结果。为了指明那一个被选择,Action类返回一个与正确结果相对应的名字。

二.             代码

struts.xml的代码如下所示:

<action name="Logon" class="tutorial.Logon">
 <result type="redirect-action">Menu</result>
 <result name="input">/tutorial/Logon.jsp</result>
</action>

三.             代码是如何工作的?

   1. 如果你在表单中输入usernamepassword属性,Logon Action将会返回“success”;

   2. 如果你其中一者或两者都没有输入值,Logon Action将返回“input”,框架将会使用Logon.jsp作为回应。

    在Hello World章节中,我们的结果使用了默认的类型:DispatcherDispatcher定向到另外的web资源。其它种类的视图能够被用来指明不同的结果类型。

     Logon映射为success(默认的返回值)使用了一种不同的返回类型。“redirect-action”使用Action的名字作为参数,接着使客户端定向到一个新的action

四.             使用一个Stub

     当我们开发web应用程序的时候,我们常常需要进行forward引用——我们需要引用到一个我们还没有开始写的action。例如,在文章的第一部分中,下一步是跳转到“Menu”页面。如果我们成功登录,我们就没有地方去了,因为“Menu”尚不存在。

     解决这种问题的方法是创建一个StubMenu”页。

     Menu.jsp的代码如下:

<html>
<head><title>Missing Feature</title></head>
<body>
<p>
    This feature is under construction.
    Please try again in the next interation.
</p>
</body>
</html>

    这段代码是如何工作的呢?

    1. 当登录class返回“Menu”时,框架将会将其与通配符映射对应起来;

    2. 框架现在将会返回一个stub的“Menu.jsp”。

    说明:如果你没有使用通配符,另一种注入一个丢失页面的方法就是指定一个<action-default-ref>元素。

五.             包括一个缺失页面

     如果你页到页的建造一个应用程序,建立一个标准的缺失页面时对应的标准页面是非常必要的。Menu.jsp的代码如下:

  <%@ taglib prefix="s" uri="/struts-tags" %>
  <s:include value="Missing.jsp" />

     这段代码是如何工作的呢?

    当需要展现Menu.jsp的时候,它将会包括标准的Missing.jsp的内容。

六.             需要记住的东西

     本框架提供多种返回类型。一个Action能够通过名字选择正确的返回结果,而不用知道到底是哪一种返回类型。

下一章:验证输入值
上一章:编写Action

你可能感兴趣的:(Struts2学习进阶(基础篇五)——选择结果)