#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. Спасибо .. 🙂 это была ошибка… теперь работает нормально