我正在开发一个带有tile的struts2项目,其中我想使用该关键字从一个jsp页面重定向到另一个页面,
<%
response.sendRedirect("search");
%>
在普通的jsp页面中,代码的工作方式为。
response.sendRedirect("search.jsp");
但是当我使用瓷砖时,它不起作用。
当我直接运行页面时,它会重定向,但是当我调用其他页面时,它不会重定向。我在没有任何其他编码的情况下尝试使用空白的html页面编写代码,但仍无效。
“search”是struts.xml页面中操作的名称。我需要在response.sendRedirect中添加任何额外的属性吗?
目前我正在使用
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=search">
做我的工作。它是否会在任何方面造成任何问题?
我检查了它的条件,重定向到多个地方,它的工作。
<%
int k=0;
if(k==1){
%>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=search">
<%
}
else
{
%>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=guestprofile">
<%
}
%>
正如我从回答中所理解的那样,尝试过这样的
response.sendRedirect("viewuniqueRedirect");
页面中的和
<action name="viewuniqueRedirect" > <result type="chain">viewunique</result> </action>
struts.xml中的,但不能正常工作
答案 0 :(得分:2)
您怀疑元标记方法非常难看是正确的。
使用struts2,您将返回切片结果类型。这可以在struts.xml中定义,也可以注释操作以生成此结果。
您要重定向的操作不应返回切片结果类型,而是返回重定向/ redirectAction类型。对于其中一个结果,请参见此处:Action redirect in struts.xml
您的操作应该执行所有必需的处理(如果有),并且tile应该构成视图。如果你真的打算重定向,那么尝试编写任何视图都是浪费。
您指向的问题(here)可能仍适用于此上下文。也就是说,如果你有书面内容,你可以不重定向,你可能会尝试重新定向并返回,然后再编写任何进一步的内容,但是tile通常是从几个视图组成的...并且将继续写入HTTP响应,因此可能会使重定向无效。如果你只有一个jsp组成视图,那么我不知道。但是我再也不会考虑调用瓷砖了。