2012-03-22 15 views
8

Znalazłem wiele pytań "How to open form result in new window", ale mam do czynienia z przeciwnym problemem.Dlaczego formularz Wyślij otwiera nowe okno/kartę?

mam forma:

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

Wtedy mam kontrolera z metodą manipulacji

@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"; 
} 

Wszystko działa poprawnie, z wyjątkiem faktu, że wynik jest otwarty w nowym oknie/karcie.

rozwiązanie, które znalazłem i pracuje jest dodanie atrybutu target:

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

Ale _self jest domyślnym AFAIK.

Zastanawiam się, dlaczego tak się dzieje.

Sprawdziłem wygenerowany kod HTML i wydaje mi się ok:

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

edit dodany nagłówkom

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 

edit 2 dodana metoda result.form

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

Mój cd klasa wałków zaczyna się od:

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

Czy zachowujesz się tak samo, gdy jesteś sierżantem Javascript? – sinuhepop

+0

Zachowanie jest takie samo z wyłączonym JS. – Betlista

+1

A co z różnymi przeglądarkami? Czy inne witryny i linki działają poprawnie? – adarshr

Odpowiedz

6

Problem był w base tag. Miałem celowo target="_blank" w tagu, prawdopodobnie dlatego, że skopiowałem przykład z w3schools: -/

+0

Dla tych z was, którzy nie mają tagu 'target =" _ blank "' in '

', jest to z pewnością rozwiązanie. –

Powiązane problemy