2012-07-02 179 views
0

我已经创建了一个登录页面,通过atuthentication类对用户进行身份验证。在使用身份验证后,我使用以下语句重定向到JSP页面。瓷砖不工作?

response.sendRedirect("welcome.page"); 

这应该查找tiles-defs.xml以映射到实际的jsp页面。我有如下

<definition name="main.layout" path="/mainLayout.jsp"> 
<put name="header" value="/header.jsp"/> 
<put name="info" value="/info.jsp"/> 
<put name="menu" value="/menu.jsp"/> 
<put name="body" value=""/> 
<put name="footer" value="/footer.jsp" /> 
</definition> 

<definition name="welcome.page" extends="main.layout"> 
<put name="title" value="Welcome"/> 
<put name="body" value="/welcome.jsp"/> 
</definition> 

我创建了mainLayout.jspwelcome.jsp页面提供这一点。现在,当用户通过身份验证后,它必须重定向到welcome.jsp。但我得到一个“网页无法找到”错误。我想映射是不正确的,这就是为什么它不能找到welcome.jsp,但我无法弄清楚我出错的地方。

回答

0

您不能重定向到图块定义。重定向包括向浏览器发送响应,告诉他:“请转到以下URL”。瓦片定义不是一个URL。

您可以重定向到JSP,并执行JSP。不过,这是不好的做法,因为在设计合理的MVC应用程序中,所有请求都应该通过控制器。你可以重定向到一个动作的URL,这是你应该做的:重定向到welcome.do的URL(假设welcome.do是Struts欢迎动作的URL)

+0

我想要的是,认证后我应该重定向到一个欢迎页面,这是一个瓷砖结构的一部分。我怎么做? – Rishabh

+0

正如我在我的回答中所说的。您可以配置一个Struts欢迎操作,该操作将转发到welcome.page磁贴定义,并从登录操作中重定向到欢迎操作的URL。 –

+0

什么是受欢迎的动作,它是struts-config.xml中的动作映射吗? – Rishabh

1
在一个

ActionClass你放置你的用户进行身份验证逻辑呐,验证 之后,用户的Action类应该返回return mapping.findForward(SUCCESS); 呐,则控制重点struts-config.xml文件在 你应该把这样的代码

<action input="/index.jsp" name="loginForm" path="/login" scope="session" type="gg.locinAction"> 
     <forward name="success" path="welcome.page"/> 
</action> 

然后控制重点tiles-defs.xmlwelcome.page定义tiles-defs.xml文件,你应该写的定义是这样

<definition name="welcome.page" extends="main.layout"> 
    <put name="title" value="Welcome"/> 
    <put name="body" value="/welcome.jsp"/> 
</definition> 

然后定义将被执行,您的所需页面将显示在瓷砖上。