Поле из формы: выбор не устанавливается в атрибуте модели при отправке формы с использованием Spring MVC

Класс формы

 public class DocumentCaptureForm {
        private final static Logger logger = Logger.getLogger(DocumentCaptureForm.class);

        private String artifactCaptureJSON;
        private String isBackside;

        public String getArtifactCaptureJSON() {
            return artifactCaptureJSON;
        }

        public void setArtifactCaptureJSON(String artifactCaptureJSON) {
            this.artifactCaptureJSON = artifactCaptureJSON;
        }

        public String getIsBackside() {
            return isBackside;
        }

        public void setIsBackside(String isBackside) {
            this.isBackside = isBackside;
        }

JSP

<form:form modelAttribute="documentCaptureForm"  action="/capture" method="post" autocomplete="off">

        <div><form:hidden path="artifactCaptureJSON" id="artifactCaptureJSON"/></div>

        Document Side<form:select id="isBackside" path="isBackside">
            <form:option selected="selected" value="Front">Front</form:option>
            <form:option value="Back">Back</form:option>
        </form:select>

        <input type="submit"  id="capturesave" value="Save" />  
</form:form>

Контроллер

@RequestMapping(value="/capture", method=RequestMethod.POST)
public ModelAndView captureArtifacts(@PathVariable long applicationPKId,
        @ModelAttribute("documentCaptureForm") DocumentCaptureForm documentCaptureForm, BindingResult result, 
        HttpServletRequest request){
    logger.debug("Entering captureArtifacts ...");

    ModelAndView mav = new ModelAndView(DOCUMENT_CAPTURE_VIEW);
    mav.addObject("title", "Capture Document");
    ArtifactCaptureData artifactData = documentCaptureForm.convertToJava();

    boolean isBackside = documentCaptureForm.getIsBackside().equals("Back");

захват артефакта JSON имеет значение, установленное в функции javascript после того, как пользователь что-то делает на странице. Это значение правильно заполняется при отправке формы в контроллер. Однако поле из выбора формы игнорируется. isBackside имеет значение null независимо от того, что я пытаюсь


person Michael Groleau    schedule 10.02.2016    source источник


Ответы (1)


В теге <form:select> помимо атрибута path можно добавить атрибут item с передачей ему списка с несколькими вариантами. Итак, вы можете сделать что-то вроде этого:

<form:select path="isBackside" items="${['Front','Back']}" />

Это самый простой способ сделать это.

person Kavv    schedule 10.02.2016