Saya telah memperhatikan kode berikut mengarahkan Pengguna ke URL di dalam proyek,
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "yahoo.com";
return "redirect:" + redirectUrl;
}
sedangkan, berikut ini mengalihkan dengan benar seperti yang diinginkan, tetapi membutuhkan http: // atau https: //
@RequestMapping(method = RequestMethod.POST)
public String processForm(HttpServletRequest request, LoginForm loginForm,
BindingResult result, ModelMap model)
{
String redirectUrl = "http://www.yahoo.com";
return "redirect:" + redirectUrl;
}
Saya ingin pengalihan untuk selalu mengarahkan ke URL yang ditentukan, apakah memiliki protokol yang valid di dalamnya atau tidak dan tidak ingin mengalihkan ke tampilan. Bagaimana saya bisa melakukan itu?
Terima kasih,
java
spring
jsp
spring-mvc
Jake
sumber
sumber
@ResponseStatus(HttpStatus.FOUND)
Anda dapat menggunakan
RedirectView
. Disalin dari JavaDoc :Contoh:
Anda juga dapat menggunakan
ResponseEntity
, misDan tentu saja, kembali
redirect:http://www.yahoo.com
seperti yang disebutkan oleh orang lain.sumber
Melihat implementasi sebenarnya dari UrlBasedViewResolver dan RedirectView , pengalihan akan selalu menjadi contextRelative jika target pengalihan Anda dimulai dengan /. Jadi, juga mengirimkan //yahoo.com/path/to/resource tidak akan membantu mendapatkan pengalihan relatif protokol.
Jadi untuk mencapai apa yang Anda coba, Anda dapat melakukan sesuatu seperti:
sumber
Cara lain untuk melakukannya adalah dengan menggunakan
sendRedirect
metode ini:sumber
Anda dapat melakukan ini dengan cara yang cukup ringkas menggunakan
ResponseEntity
seperti ini:sumber
Bagi saya bekerja dengan baik:
sumber
Untuk url eksternal Anda harus menggunakan " http://www.yahoo.com " sebagai redirect url.
Ini dijelaskan dalam redirect: prefix dari dokumentasi referensi Spring.
akan mengarahkan relatif ke konteks Servlet saat ini, sementara nama seperti
akan dialihkan ke URL mutlak
sumber
Apakah Anda mencoba RedirectView di mana Anda bisa memberikan parameter contextRelative?
sumber
/
untuk memeriksa apakah harus relatif terhadap konteks webapp. Permintaan pengalihan akan tetap untuk host yang sama.Singkatnya
"redirect://yahoo.com"
akan meminjamkan Andayahoo.com
.dimana
"redirect:yahoo.com"
akan meminjamkanmuyour-context/yahoo.com
yaitu untuk mantanlocalhost:8080/yahoo.com
sumber