2009-12-10 77 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