2010-03-06 70 views

回答

1

您可以通過獲得請求對象的操作方法:

HttpServletRequest request = ServletActionContext.getRequest(); 

然後你可以找到請求的URL是這樣的:

String spath = request.getServletPath(); 

然後你可以分析它,並尋找您需要並轉發的模式。


UPDATE:

您可以在struts.xml的配置文件中使用包。讓我們說「userapps」。

 <package name="userapps" extends="default" namespace="/userapps"> 
      <action name="*" class="path.to.your.ActionClass" method="processUrl"> 
       <result name="success" type="redirectAction"> 
        <param name="actionName">userpage</param> 
        <param name="id">${user.id}</param> 
       </result> 
      </action> 
    </package> 

在ActionClass的processURL方法,你可以拉出來,你感興趣的URL的一部分,並設置屬性可以說用戶和他的身份證。然後,您從行動中返回成功。

您將會有第二個操作,稱爲userpage說,它將採取用戶的id並轉發到正確的頁面。

現在,任何url形式localhost/myapp/userapps /anything.action將調用processURL方法。

+0

但在struts2中,如果我說http:// localhost/myapp/accountname accountname操作根本不存在。 accountname對於不同的用戶是不同的。如何我可以避免404錯誤,如果我按照你的代碼 – Anand

+0

我可以將它設置爲名稱空間/並具有此功能的所有reqquests ..? – Anand

+0

可以說我將我的應用程序設置爲默認上下文,並且http:// localhost將訪問我的Java Web應用程序。那麼用戶john向該服務註冊將獲得一個URL,如http:// localhost/john。他第一次來到他的網站htt:// localhost/john時,他看到了他的登錄頁面。登錄後,可以說他的帳戶中有一個任務頁面,其URL爲http:// localhost/john/tasks。我是否也可以將您的功能應用於任務頁面請求。在這種情況下,代碼如何改變? – Anand