2015-09-29 5 views
0

Я разрабатываю приложение Spring MVC, где мне нужно проверить форму. Моя проблема следующая: я хочу изменить обработку возвращаемых данных из моего метода в зависимости от некоторой логики.Как установить тип ответа во время выполнения (Spring MVC)

Например, у меня есть страница регистрации! Если поля пользователя действительны, мне нужно отправить сообщение на ajax на странице регистрации. Но если они недействительны, мне нужно вернуть имя вида (или перенаправить). Как мне это сделать? Вот мой код:

@RequestMapping(value = "save_user", method = RequestMethod.POST) 
public String saveUser(@Valid User user, BindingResult result) { 
     if(result.hasErrors()) { 
      return "common/add_user"; // Here I need to return the view name or do redirect 
     } else { 
      userManager.add(user); 
      return "success... bla bla bla"; // Here I need to return some message. 
     } 
} 
+0

Если вы не хотите перенаправлять, ваш метод controlller должен выглядеть как public @ReponseBody String saveUser (остальное остается таким же). Если вы хотите перенаправить, удалите responseBody. Ваш вопрос не точен, чтобы помочь. Кроме того, вы уже возвращаете общее имя вида/add. Итак, выберите один из них или просмотрите его или отправьте в Ajax. –

+0

Спасибо за ответ. Да. Ты прав. Но я хотел бы знать, могу ли я выбрать один (либо просмотр, либо отправить) во время выполнения? Могу ли я выбрать его в зависимости от какой-то логики? Возможно, у Весны есть механизм для этого ... –

+0

Насколько я знаю, такого механизма и такого требования я никогда не слышал. Может быть, какой-то другой пользователь может вам помочь, но я в этом сомневаюсь. Удачи. –

ответ

1

Я думаю, что вы можете сделать, как:

@RequestMapping(value = "save_user", method = RequestMethod.POST) 
@ResponseBody 
public String saveUser(@Valid User user, BindingResult result) { 
     if(result.hasErrors()) { 
      return "common/add_user"; // Here I need to return the view name or do redirect 
     } else { 
      userManager.add(user); 
      return "success... bla bla bla"; // Here I need to return some message. 
     } 
} 

в вашем AJAX, вы можете получить данные ответа

$.ajax({ 
    type: "POST", 
    url: "save_user", 
    data: $("#user").serialize(), 
    success: function(data) { 
    //get response data and process it 
    ... 
    } 
}); 

Надежда эта помощь!

+0

Это должно работать, поскольку вы можете перенаправить пользователя на основании полученной String. –

+0

Спасибо! :) Это хорошая идея! Я попытаюсь применить это. –

Смежные вопросы