Struts2 第17part Dynamic Result動態結果集

2013年2月18日 晴

被一個bug搞得我發神經,不過經過認真搜索,最後還是找到解決方案,這樣才得以讓小巫繼續學習下去。

Struts2 第17part Dynamic Result動態結果集

之前,關於Action的動態方法調用,已經接觸過動態這個概念了。然而動態結果又是怎麼進行配置的呢? 關鍵還是在struts.xml配置文件當中。

先來說說自己遇到的bug是什麼吧,動態配置結果用到的是OGNL表達式,項目原本是這樣配置的。

  1. <action name="user" class="com.bjsxt.struts2.user.action.UserAction"> 
  2.             <result>${r}</result> 
  3.         </action>      

result標籤裏的用${r}這樣的表達式來動態指定下一個Action,原本照這樣配置,應該是沒有什麼問題的。但就是出錯,之前以爲是Struts2的版本問題,然後就去Web.xml修改Filter.但還是無濟於事,最後上網查了很久,最終找到一個能解決自己問題的文章,自己稍微修改了一下,問題就這樣解決了。

完整的struts.xml代碼如下:

  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd"> 
  5.  
  6. <struts> 
  7.     <constant name="struts.devMode" value="true" /> 
  8.     <package name="user" namespace="/user" extends="struts-default"> 
  9.         <action name="user" class="com.wwj.struts2.user.action.UserAction"> 
  10.             <result>${r}.jsp</result> 
  11.         </action> 
  12.     </package> 
  13. </struts> 

我是將${r}改爲${r}.jsp, 然後問題就解決了,感覺有點扯。對吧。

當然UserAction也要做相應的修改,把jsp後綴去掉就ok了。

  1. package com.wwj.struts2.user.action;  
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.  
  5. public class UserAction extends ActionSupport {  
  6.     private int type;  
  7.  
  8.     private String r;  
  9.       
  10.     public String getR() {  
  11.         return r;  
  12.     }  
  13.  
  14.     public void setR(String r) {  
  15.         this.r = r;  
  16.     }  
  17.  
  18.     public int getType() {  
  19.         return type;  
  20.     }  
  21.  
  22.     public void setType(int type) {  
  23.         this.type = type;  
  24.     }  
  25.  
  26.     @Override 
  27.     public String execute() throws Exception {  
  28.         // TODO Auto-generated method stub  
  29.         if(type == 1) r="/user_success";  
  30.         else if (type == 2) r="/user_error";  
  31.         return "success";  
  32.     }  
  33.       
  34.       
  35. }  

 

就這樣,關於動態結果集配置的內容就這麼多。我發現下面幾個項目也是同樣的問題。不過已經知道問題所在,我想應該能輕鬆解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章