風人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
          數據加載中……

          struts2--Result Configuration

           

          當Action類方法完成,會返回一個字符串,這個字符串值用來選擇result元素。一個action可以映射到一組不同描述的結果。標準的result是在ActionSupport 這個基類中定義的。

          String SUCCESS = "success";
          String NONE    
          = "none";
          String ERROR   
          = "error";
          String INPUT   
          = "input";
          String LOGIN   
          = "login";

          當然,ap可以自定義其他的result標記來match特定的情況。

          Result Elements
          result有默認值設定,如果不指定屬性,則使用success和dispatch來執行這個result

          <action name="Hello">
            
          <result>/hello/Result.jsp</result>
            
          <result name="error">/hello/Error.jsp</result>
            
          <result name="input">/hello/Input.jsp</result>
          </action>


          如上顯示,默認情況下,如果返回值是success,則執行第一個result,其他的情況執行下面的匹配的result

          Global Results

          大部分時候,results都是嵌套在antion元素中。但是很多results會應用到不同的action。在一個安全的應用中,一個client試圖訪問一個沒有認證的頁面,那么很多action可能都需要去訪問 logon result。
          如果action需要共享result, 一組global result可以為每一個package定義。框架首先查詢嵌套在action中的本地result,如果本地result沒有符合的,則在global 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>

           

          Dynamic Results
          A result may not be known until execution time. Consider the implementation of a state-machine-based execution flow; the next state might depend on any combination of form input elements, session attributes, user roles, moon phase, etc. In other words, determining the next action, input page, etc. may not be known at configuration time.

          Result values may be retrieved from its corresponding Action implementation by using EL expressions that access the Action's properties, just like the Struts 2 tag libraries. So given the following Action fragment:
          一個action有時候不可能在執行前就知道它的action,這種情況就需要通過動態result來實現。

           首先定義一個屬性,來存放這個值,然后在流程定義中通過EL表達式來取得這個屬性值。這樣就可以通過程序動態指定需要轉發的值。

          private String nextAction;

             public String getNextAction() {
                 
          return nextAction;
             }

          you might define a result like this:
          <action name="fragment" class="FragmentAction">
                  
          <result name="next" type="redirect-action">${nextAction}</result>
          </action>
          If a FragmentAction method returns "next" the actual value of that result will be whatever is in FragmentAction's nextAction property. So nextAction may be computed based on whatever state information necessary then passed at runtime to "next"'s redirect-action.

          總結,struts2對于result提供了很多很靈活的設置方法,用戶可以使用相應的方法處理特定的邏輯。對于各種情況,總能找出相應的方法來出來。

          posted on 2007-06-27 11:29 風人園 閱讀(2867) 評論(0)  編輯  收藏 所屬分類: Struts2

          主站蜘蛛池模板: 田林县| 时尚| 象州县| 垣曲县| 仁布县| 治县。| 定州市| 太仓市| 平乐县| 鹤峰县| 从化市| 四会市| 蒙阴县| 旌德县| 梅河口市| 洞头县| 永清县| 洛隆县| 冷水江市| 宜兴市| 甘孜县| 东光县| 民和| 仁化县| 南涧| 翼城县| 新邵县| 盐池县| 哈尔滨市| 图木舒克市| 琼海市| 高阳县| 凤凰县| 射洪县| 海淀区| 澎湖县| 沿河| 平利县| 甘孜县| 岑巩县| 商城县|