2009-12-10 76 views
1

當您點擊我的應用程序的根環境時,Struts2會拋出一個錯誤:使用Struts2的默認重定向

ex。 http://localhost:8080/

回報

HTTP ERROR 404

Problem accessing /. Reason:

There is no Action mapped for namespace/and action name . 

有沒有辦法做一個默認的Struts2的重定向?

回答

2

您可以指定一個可喜的文件列表中的web.xml和index.jsp的規定,例如:

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

然後在index.jsp中,您可以在上面放這樣的:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=initLogin.action"> 

假設你在struts.xml中這樣的事情:

<action name="*Login" method="{1}" class="com.abc.LoginAction"> 
    <result name="login">/login.jsp</result> 
    <result name="register">/register.jsp</result> 
    <result name="success">/success.jsp</result> 
</action> 

這會重定向到您LoginAction類有一個init動作。

那麼,如果我去了http://localhost:8080/MyApp,這是它會去的默認動作。

+0

感謝您的快速回復。我希望有一個比元刷新重定向更好的方式,但這將工作正常。 – rhigdon 2009-12-10 20:10:21

+0

@rhigdon - 你很受歡迎,很高興提供幫助。如果此解決方案解決了您的問題,請不要忘記標記爲已回答:)。 – dcp 2009-12-10 20:19:10

3

在我的應用我只是做了以下重定向到所選的動作:

<action name="*"> 
    <result type="redirectAction"> 
     <param name="actionName">portal</param> 
    </result> 
</action> 

只要確保你把這個在你的struts.xml配置文件中的最後一個動作,然後將捕獲的一切,之前無法匹配。

這種方式重定向發生在struts2中,這對用戶是不可見的。

0

沒有比元刷新更好的東西嗎?比如在struts中有一個jsp:forward ...這似乎在struts2中不起作用。我不知道我對元刷新很滿意。不知道它與使用任何java提供的重定向不同,猜測我可以使用那個可能在jsp中的調度器類,但不知道。

0

經歷了以下鏈接中的例子中,很多教程給出那裏,使用它可以識別你的錯誤..

linklink2