2016-02-10 3 views
0

Формы классомполя из формы: выберите не установлено в modelAttribute на подчиненной форме с использованием 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, независимо от того, что я пробовал

ответ

0

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

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

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