Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Sring: не показывает тот же view после ошибки в BindingResult / 11 сообщений из 11, страница 1 из 1
11.12.2016, 15:43
    #39364409
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
страница регистрации доступна (и работает) по адресу
http://localhost:8080/alphasoft/register
где register - это register.jsp

однако после обнаружения ошибок в контролере отображает пустой экран вместо исходной страницы
Код: java
1.
2.
3.
4.
5.
if (result.hasErrors()) {
	System.out.println("there were some errors right here");
        return "register";//отобразит пустой экран - ошибок нет
        //return "login"; //а это будет работать
}



почему так?
...
Рейтинг: 0 / 0
11.12.2016, 17:39
    #39364449
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
rema174,

а Весь код контроллера можно увидеть?
...
Рейтинг: 0 / 0
11.12.2016, 17:44
    #39364457
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
По факту - классический пример :

контроллера (книжный)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
@Controller
@RequestMapping(value = {INFO_URL})
public class InfoController {

    public static final String INFO_URL = "/info";


  @RequestMapping(value = {"/create"}, method = RequestMethod.GET)
    public ModelAndView create(@RequestParam(value = "id", required = false, defaultValue = "0") Long id) {
        ModelAndView modelAndView = new ModelAndView(CREATE);
        modelAndView.addObject(....);
        modelAndView.addObject(....);
        return modelAndView;
    }

    @RequestMapping(value = {"/create"}, method = RequestMethod.POST)
    public RedirectView create(HttpServletRequest request, Model model, @Valid InfoForm infoForm, BindingResult bindingResult, RedirectAttributes redirectAttrs) {

        RedirectView redirectView = new RedirectView();

        if (bindingResult.hasErrors()) {
            redirectAttrs.addFlashAttribute("errorMessage",            bindingResult.getFieldErrors().stream().map(FieldError::getDefaultMessage).collect(joining(", ")));
            redirectView.setContextRelative(true);
            redirectView.setUrl(request.getRequestURI());
        } else {

            Info info = new Info(infoForm);
            lawInfo = infoService.save(info);
            String url = HtmlHelper.infoToUrlConverter(info);

            redirectView.setUrl(url);
        }
        return redirectView;

    }
...
Рейтинг: 0 / 0
11.12.2016, 17:47
    #39364459
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
http://javastudy.ru/spring-mvc/spring-mvc-pattern-prg-postredirectget/

так более понятно ...

с переходом между post и get
...
Рейтинг: 0 / 0
11.12.2016, 23:10
    #39364558
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
Atum1,
помог редирект.
если я правильно понял, то использование BindingResult реализует паттерн PRG,
и т.о. из метода hasErrors() можно отправить только редирект на туже страницу?
...
Рейтинг: 0 / 0
12.12.2016, 22:48
    #39365286
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
оказывается ошибка есть, в консоли браузера выдает - 405 (Method Not Allowed)
...
Рейтинг: 0 / 0
12.12.2016, 23:05
    #39365296
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
в форме на jsp стоит метод POST, который обращается к processRegistration(), тогда что значит эта ошибка - 405 (Method Not Allowed) ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
@Controller
@RequestMapping(value = "/register")
public class RegisterController {

	@RequestMapping(method = RequestMethod.GET)
	public String viewRegistration(Map<String, Object> model) { ... }

       @RequestMapping(method = RequestMethod.POST)
	public String processRegistration(
			@Valid @ModelAttribute("userForm") UserModel user, 
			BindingResult result, 
			Map<String, Object> model) {
		
		if (result.hasErrors()) {
			return "register";
        }
		
		...
	}
...
Рейтинг: 0 / 0
13.12.2016, 11:09
    #39365540
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
rema174в форме на jsp стоит метод POST, который обращается к processRegistration(), тогда что значит эта ошибка - 405 (Method Not Allowed) ?
То и означает. Что по указанному URL сервер не обрабатывает POST запросы. Какой точно URL в консоли браузера?
...
Рейтинг: 0 / 0
13.12.2016, 12:09
    #39365596
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
Blazkowicz,

автор http://localhost:8080/alphasoft/register

там же разница только в get-post
...
Рейтинг: 0 / 0
17.12.2016, 16:19
    #39369286
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
такое же точно:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@Controller
@RequestMapping(value = "recover")
public class RecoverController {

    @RequestMapping(method = RequestMethod.GET)
    public String recoverPage(Map<String, Object> model) {
        return "recover"; //this works
    }

    @RequestMapping(method = RequestMethod.POST)
    public String recover(Map<String, Object> model) {
        System.out.println("_____________recover in action");
        return "home"; //error 405
    }



Код: java
1.
<form name='recoverForm' action="<c:url value='recover'/>" method='POST'>



ошибка при отправлении формы

авторRequest method 'POST' not supported

...
Рейтинг: 0 / 0
17.12.2016, 17:16
    #39369302
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sring: не показывает тот же view после ошибки в BindingResult
как оказалось, посоны, дело было в csrf, где нужно было из формы отправлять скрытый токен
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Sring: не показывает тот же view после ошибки в BindingResult / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]