我创建了一个登录页面,通过atuthentication类对用户进行身份验证。经过身份验证后,我使用以下语句将重定向到JSP页面。
response.sendRedirect("welcome.page");
这应该查找映射到实际jsp页面的tiles-defs.xml
。我提供了以下内容
<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.jsp
和welcome.jsp
页面。现在,当用户通过身份验证后,必须重定向到welcome.jsp
。但我得到“无法找到网页”错误。我猜映射不正确,这就是为什么它找不到welcome.jsp
,但我无法弄清楚我哪里出错了。
答案 0 :(得分:1)
在您ActionClass
之一的用户身份验证逻辑na中,
在验证用户后,Action类应该返回return mapping.findForward(SUCCESS);
na,然后控件焦点在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.xml
welcome.page
tiles-defs.xml
定义<definition name="welcome.page" extends="main.layout">
<put name="title" value="Welcome"/>
<put name="body" value="/welcome.jsp"/>
</definition>
文件中,您应该像这样编写定义
{{1}}
然后将执行定义,并且您的所需页面将显示在图块上。
答案 1 :(得分:0)
您无法重定向到切片定义。重定向包括向浏览器发送响应,告诉他:“请转到以下URL”。切片定义不是URL。
您可以重定向到JSP,然后执行JSP。但这是不好的做法,因为在设计合理的MVC应用程序中,所有请求都应该通过控制器。您可以重定向到操作的URL,这是您应该执行的操作:重定向到welcome.do
URL(假设welcome.do
是Struts欢迎操作的URL)
答案 2 :(得分:0)