說明:本文翻譯自struts自帶的doc,路經(jīng)為:struts-2.0.8-all\struts-2.0.8\docs\docs\selecting-results.html
在編寫Action這一章節(jié)中,我們創(chuàng)建了一個Logon類來測試輸入。在本章中,我們將使這個測試的結(jié)果起作用。
一. 選擇一個“Input”結(jié)果
在一個Action執(zhí)行一個請求后,一個提供用來作為這個請求回應(yīng)的結(jié)果被選擇。這個結(jié)果可以簡單的定向到一個HTML頁面、一個JSP頁面、一個FreeMaker或一個Velocity模板、或者這個結(jié)果可能構(gòu)造一個PDF或某些更加復(fù)雜的輸出(例如JasperReports)。在一個action映射中可能有多個可選的結(jié)果。為了指明那一個被選擇,Action類返回一個與正確結(jié)果相對應(yīng)的名字。
二. 代碼
struts.xml的代碼如下所示:
<action name="Logon" class="tutorial.Logon">
<result type="redirect-action">Menu</result>
<result name="input">/tutorial/Logon.jsp</result>
</action>
三. 代碼是如何工作的?
1. 如果你在表單中輸入username和password屬性,Logon Action將會返回“success”;
2. 如果你其中一者或兩者都沒有輸入值,Logon Action將返回“input”,框架將會使用Logon.jsp作為回應(yīng)。
在Hello World章節(jié)中,我們的結(jié)果使用了默認的類型:Dispatcher。Dispatcher定向到另外的web資源。其它種類的視圖能夠被用來指明不同的結(jié)果類型。
Logon映射為success(默認的返回值)使用了一種不同的返回類型。“redirect-action”使用Action的名字作為參數(shù),接著使客戶端定向到一個新的action。
四. 使用一個Stub頁
當(dāng)我們開發(fā)web應(yīng)用程序的時候,我們常常需要進行forward引用——我們需要引用到一個我們還沒有開始寫的action。例如,在文章的第一部分中,下一步是跳轉(zhuǎn)到“Menu”頁面。如果我們成功登錄,我們就沒有地方去了,因為“Menu”尚不存在。
解決這種問題的方法是創(chuàng)建一個Stub“Menu”頁。
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. 當(dāng)?shù)卿?/span>class返回“Menu”時,框架將會將其與通配符映射對應(yīng)起來;
2. 框架現(xiàn)在將會返回一個stub的“Menu.jsp”。
說明:如果你沒有使用通配符,另一種注入一個丟失頁面的方法就是指定一個<action-default-ref>元素。
五. 包括一個缺失頁面
如果你頁到頁的建造一個應(yīng)用程序,建立一個標(biāo)準(zhǔn)的缺失頁面時對應(yīng)的標(biāo)準(zhǔn)頁面是非常必要的。Menu.jsp的代碼如下:
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:include value="Missing.jsp" />
這段代碼是如何工作的呢?
當(dāng)需要展現(xiàn)Menu.jsp的時候,它將會包括標(biāo)準(zhǔn)的Missing.jsp的內(nèi)容。
六. 需要記住的東西
本框架提供多種返回類型。一個Action能夠通過名字選擇正確的返回結(jié)果,而不用知道到底是哪一種返回類型。
下一章:驗證輸入值
上一章:編寫Action
posted on 2007-07-31 12:36
阿蜜果 閱讀(2273)
評論(3) 編輯 收藏 所屬分類:
Struts2