Ich habe versucht, herauszufinden, bevölkert zu finden, wie ein Dropdown-Feld in Spring MVC zu füllen. Es gibt ein paar Threads da draußen zu diesem Thema, aber keiner von denen, die ich gefunden habe, haben mir geholfen, also hoffe ich, dass jemand hier mir helfen kann.Wie Drop-Down-Box in Spring MVC
Hier ist mein Controller:
@Controller
@RequestMapping("/document-revision")
public class DocumentRevisionController {
@Autowired
private DocumentRevisionService documentRevisionService;
private DocumentService documentService;
@RequestMapping(value="/list", method=RequestMethod.GET)
public String getDocumentRevisionList(Model model) {
List<DocumentRevision> documentRevisions = documentRevisionService.retrieveAllDocumentRevisions();
model.addAttribute("documentRevisions", documentRevisions);
return "document-revision";
}
@RequestMapping(value="/add", method=RequestMethod.GET)
public String getDocumentRevision(Model model) {
DocumentRevision documentRevision = new DocumentRevision();
model.addAttribute("documentRevisionAttribute", documentRevision);
return "new-documnent-revision";
}
@RequestMapping(value="/add", method=RequestMethod.POST)
public String postDocumentRevision(@ModelAttribute("documentRevisionAttribute") @Valid DocumentRevision documentRevision, BindingResult result) {
if(result.hasErrors()){
return "new-document-revision";
}
documentRevisionService.createDocumentRevision(documentRevision);
return "redirect:/testapp/document-revision/list";
}
}
und hier ist die jsp Seite:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
.error { color: red; }
</style>
</head>
<body>
<h1>Create New Document Revision</h1>
<c:url var="saveUrl" value="/testapp/document-revision/add" />
<form:form modelAttribute="documentRevisionAttribute" method="POST" action="${saveUrl}">
<table>
<tr>
<td>DocumentNumber</td>
<td><form:select path="document_number">
<form:option value="NONE" label="--- Select ---" />
<form:options items="${documentNumberList}" />
</form:select>
</td>
<td><form:errors path="document_number" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="documentRState">Document R-State</form:label></td>
<td><form:input path="documentRState"/></td>
<td><form:errors path="documentRState" cssClass="error"/></td>
</tr>
</table>
<input type="submit" value="Save" />
</form:form>
</body>
</html>
ich versucht habe, eine @ModelAttribute Verfahren das Hinzufügen, die die Belegnummern abruft,
@ModelAttribute
public List<Document> documentNumberList(){
return documentService.retrieveAllDocumentNumbers();
}
aber es gab mir Fehler. Gibt es jemanden, der weiß, wie es gemacht werden sollte?
Vielen Dank für Ihre Zeit
/D
bearbeiten Ich dachte, ich würde klarstellen, dass mein Wunsch, eine Drop-Down-Box für die Belegnummern haben, die durch das Document abgerufen werden.
Edit 2 Hier ist das Fehlerprotokoll wie gewünscht:
java.lang.NullPointerException
testapp.controller.DocumentRevisionController.documentNumberList(DocumentRevisionController.java:33)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.method.annotation.ModelFactory.invokeModelAttributeMethods(ModelFactory.java:123)
org.springframework.web.method.annotation.ModelFactory.initModel(ModelFactory.java:97)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:614)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Lösung Ich dachte, ich würde den kompletten Controller-Code hinzufügen, dass es für den Fall, funktioniert es andere, die davon profitieren könnten:
@Controller
@RequestMapping("/document-revision")
public class DocumentRevisionController {
@Autowired
private DocumentRevisionService documentRevisionService;
@Autowired
private DocumentService documentService;
@RequestMapping(value="/list", method=RequestMethod.GET)
public String getDocumentRevisionList(Model model) {
List<DocumentRevision> documentRevisions = documentRevisionService.retrieveAllDocumentRevisions();
model.addAttribute("documentRevisions", documentRevisions);
return "document-revision";
}
@RequestMapping(value="/add", method=RequestMethod.GET)
public String getDocumentRevision(Model model) {
DocumentRevision documentRevision = new DocumentRevision();
model.addAttribute("documentRevisionAttribute", documentRevision);
model.addAttribute("documentNumberList", documentService.retrieveAllDocumentNumbers());
return "new-documnent-revision";
}
@RequestMapping(value="/add", method=RequestMethod.POST)
public String postDocumentRevision(@ModelAttribute("documentRevisionAttribute") @Valid DocumentRevision documentRevision, BindingResult result) {
if(result.hasErrors()){
return "new-document-revision";
}
documentRevisionService.createDocumentRevision(documentRevision);
return "redirect:/testapp/document-revision/list";
}
}
Können Sie das Fehlerprotokoll einfügen? –