2012-03-22 12 views
8

Encontré muchas preguntas "How to open form result in new window", pero estoy enfrentando el problema opuesto.¿Por qué el envío de formularios abre una nueva ventana/pestaña?

tengo forma:

<form:form method="post" commandName="search"> 
    ... 
    <input type="submit" value="Search" /> 
</form> 

entonces he controlador con el método de manipulación

@RequestMapping(value = "/search.form", method = RequestMethod.POST) 
public String submit(@Valid final SearchObject searchObject, final BindingResult bindingResult) { 
    if (bindingResult.hasErrors()) return "forms/search"; 
    return "redirect:/A/result.form"; 
} 

Todo funciona bien, excepto el hecho de que la consecuencia se abre en una nueva ventana/pestaña.

solución que he encontrado y está trabajando es agregar atributo de destino:

<form:form method="post" commandName="search" target="_self"> 

Pero _self es por defecto que yo sepa.

Me pregunto por qué está sucediendo eso.

he comprobado HTML generado y me parece bien:

<form id="search" action="/myApp/A/search.form" method="post"> 

edición añadió cabeceras

Content-Language en-US 
Content-Length 0 
Date Thu, 22 Mar 2012 16:29:13 GMT 
Location http://localhost:8080/myApp/A/result.form 
Server Apache-Coyote/1.1 
Request Headersview source 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Connection keep-alive 
Cookie JSESSIONID=E9ACB44C4ED3814814ABE7D96C90135C; GUEST_LANGUAGE_ID=cs_CZ; COOKIE_SUPPORT=true 
Host localhost:8080 
Referer http://localhost:8080/myApp/A/search.form 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0 
Response Headers From Cache 
Content-Language en-US 
Content-Length 0 
Date Thu, 22 Mar 2012 16:29:13 GMT 
Location http://localhost:8080/myApp/A/result.form 
Server Apache-Coyote/1.1 
Request Headers From Upload Stream 
Content-Length 64 
Content-Type application/x-www-form-urlencoded 


GET sessions.form 

200 OK 

localhost:8080 

309 B 

::1:8080 


6ms 
HeadersResponseCacheHTML 
Content-Language en-US 
Content-Length 309 
Content-Type text/html;charset=utf-8 
Date Thu, 22 Mar 2012 16:29:13 GMT 
Server Apache-Coyote/1.1 
Request Headersview source 
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Connection keep-alive 
Cookie JSESSIONID=E9ACB44C4ED3814814ABE7D96C90135C; GUEST_LANGUAGE_ID=cs_CZ; COOKIE_SUPPORT=true 
Host localhost:8080 
Referer http://localhost:8080/myApp/A/search.form 
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0 

edición 2 método adicional para result.form

@RequestMapping(value = "/result.form", method = RequestMethod.GET) 
public String result() { 
    return "forms/result"; 
} 

Mi cont la clase del rodillo comienza con:

@Controller 
@RequestMapping(value = "/A") 
public class AController { 
+0

¿Tiene el mismo comportamiento cuando siable Javascript? – sinuhepop

+0

Comportamiento es lo mismo con JS deshabilitado. – Betlista

+1

¿Qué tal en diferentes navegadores? ¿Funcionan bien otros sitios web y enlaces? – adarshr

Respuesta

6

El problema estaba en base tag. Intenté target="_blank" intencionalmente en la etiqueta, probablemente porque copié el ejemplo de w3schools: -/

+0

Para aquellos de ustedes que no tienen 'target =" _ blank "' en la etiqueta '

', esta es ciertamente la solución. –

Cuestiones relacionadas