response.sendRedirect не работает в плитках Struts2 - PullRequest
0 голосов
/ 26 марта 2012

Я разрабатываю проект struts2 с плитками, в котором я хочу использовать ключевое слово для перенаправления с одной страницы JSP на другую страницу как,

   <%
    response.sendRedirect("search");
    %>

На обычных страницах jsp код работает как.

response.sendRedirect("search.jsp");

но когда я использую плитки, он не работает.

когда я запускаю страницу напрямую, ее перенаправление, но когда я называю это какой-то другой страницей, она не перенаправляет. Я пробовал код с пустой HTML-страницей без каких-либо других кодировок, но он по-прежнему не работает.

«поиск» - это имя действия на странице 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 Ответ

2 голосов
/ 28 марта 2012

Вы правы, подозревая, что ваш метатег метод очень уродлив.

С Struts2 вы возвращаете тип результата тайлов.Это либо определено в вашем struts.xml, либо действие аннотировано для получения этого результата.

Ваше действие, которое вы хотите перенаправить, не должно возвращать тип результата плиток, а тип redirect / redirectAction.Один из этих результатов см. Здесь: Перенаправление действий в struts.xml

Ваше действие должно выполнить всю необходимую обработку (если есть), а плитки должны составить представление.Если вы действительно намереваетесь перенаправить, то пытаться составить любое представление - это пустая трата времени.

Вопрос, на который вы указали ( здесь ), вероятно, все еще применим в этом контексте.То есть вы не можете перенаправить, если вы написали контент, и вы можете попытаться перенаправить и вернуться, прежде чем писать какой-либо другой контент, но плитки часто составляются из нескольких представлений ... и продолжат запись в ответ HTTP и, таким образом, скорее всего, обнуляют перенаправление,Если у вас есть только один JSP, составляющий представление, то я не знаю.Но еще раз я бы даже не подумал вызывать тайлы.

...