Как получить выбранное значение переключателя в Spring MVC

#spring #button #model-view-controller #radio

#весна #model-view-controller #переключатель

Вопрос:

Я разрабатываю веб-приложение на Spring MVC. У меня есть форма добавления пользователя. Существуют два типа пользователей: клиент и персонал. Тип пользователя выбирается с помощью переключателей. В соответствии с выбранным типом пользователя я хочу отправить заполненные данные в форме в две таблицы в базе данных. Может кто-нибудь подсказать мне, как проверить выбранный переключатель и, соответственно, выполнить требуемый запрос. Ниже приведены мои два jsp с переключателями

      <label  class="radio-inline">
       <input type="radio" name="customer" id="customer"  value="customer" checked="checked"/>Customer
     </label>
     <label  class="radio-inline">
       <input  type="radio" name="staff"  id="staff" value="staff"/>Staff Member
     </label>
  

Ниже приведен мой метод контроллера для отправки формы. Я перенес две переключающие кнопки на контроллер, используя аннотацию @RequestParam. Если бы я мог проверить, какой переключатель выбран внутри этого метода контроллера, тогда я мог бы выполнить соответствующие функции для каждого сценария. Может ли кто-нибудь, пожалуйста, помочь мне с этим…

 @RequestMapping(value="/addCustomer",method = RequestMethod.POST)
public ModelAndView saveOrUpdate(@ModelAttribute("newUser")  User newUser,@RequestParam("customer") String customer,
                                 @RequestParam("staff") String staff,BindingResult validationResult) throws SQLIntegrityConstraintViolationException {

    if (validationResult.hasErrors()) {
        new ModelAndView("userAdd", "command", newUser);
    }

if(staff selected){
    boolean usernameUnique=staffRepository.checkUsernameUnique(newUser);
    if(usernameUnique) {
        int i = staffRepository.add(newUser);
        if (i == 0)
            return new ModelAndView(new RedirectView("stangeFailurePage"));
        else {
            return new ModelAndView(new RedirectView("successPage"));
        }
    }else{
        validationResult.rejectValue("username", "error.username.exists", "The username is already in use.");
        new ModelAndView("userAdd", "command", newUser);
    }
 }
 if(customer selected){
  // do whatever related to that
 }
    return new ModelAndView(new RedirectView("add"));
}
  

Комментарии:

1. Вы неправильно используете переключатели. Они должны иметь одинаковое имя, которое в конечном итоге является именем параметра, который вы отправляете на серверную часть. Таким образом, это также фактический переключатель.

Ответ №1:

Прежде всего, вы должны указать свое radio buttons то же имя, что и M. Deinum, упомянутый в комментариях:

  <label  class="radio-inline">
   <input type="radio" name="radioName" id="customer"  value="customer" checked="checked"/>Customer
 </label>
 <label  class="radio-inline">
   <input  type="radio" name="radioName"  id="staff" value="staff"/>Staff Member
 </label>
  

Чтобы получить значение checked radio button , вы можете использовать @RequestParam аннотацию с именем radio buttons :

 ...
public ModelAndView saveOrUpdate(@ModelAttribute("newUser") User, @RequestParam("radioName") String customer,
BindingResult validationResult) throws SQLIntegrityConstraintViolationException {
...
  

теперь клиент будет нести значение переключателя. Если пользователь выбрал staff, значение customer будет «stuff», если пользователь выбрал customer, значение customer будет «customer».

У меня все работает нормально.

Комментарии:

1. Спасибо .. 🙂 это была ошибка… теперь работает нормально