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 {
Czy zachowujesz się tak samo, gdy jesteś sierżantem Javascript? – sinuhepop
Zachowanie jest takie samo z wyłączonym JS. – Betlista
A co z różnymi przeglądarkami? Czy inne witryny i linki działają poprawnie? – adarshr