response.sendRedirect无法在Struts2磁贴中工作

时间:2012-03-26 05:20:18

标签: jsp struts2 struts tiles response.redirect

我正在开发一个带有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中的

,但不能正常工作

1 个答案:

答案 0 :(得分:2)

您怀疑元标记方法非常难看是正确的。

使用struts2,您将返回切片结果类型。这可以在struts.xml中定义,也可以注释操作以生成此结果。

您要重定向的操作不应返回切片结果类型,而是返回重定向/ redirectAction类型。对于其中一个结果,请参见此处:Action redirect in struts.xml

您的操作应该执行所有必需的处理(如果有),并且tile应该构成视图。如果你真的打算重定向,那么尝试编写任何视图都是浪费。

您指向的问题(here)可能仍适用于此上下文。也就是说,如果你有书面内容,你可以不重定向,你可能会尝试重新定向并返回,然后再编写任何进一步的内容,但是tile通常是从几个视图组成的...并且将继续写入HTTP响应,因此可能会使重定向无效。如果你只有一个jsp组成视图,那么我不知道。但是我再也不会考虑调用瓷砖了。