2016-04-02 8 views
1

Ich weiß, dass diese Frage auf verschiedene Arten gestellt und beantwortet wurde, aber mit Spring ist alles anders.Spring 4/Weder BindingResult noch einfaches Zielobjekt

Ich bin mit Spring 4 - MVS und will nur mein erstes MVC schaffen - Hello World Implementierung und bekam den Fehler

java.lang.IllegalStateException: Weder BindingResult noch schlicht Zielobjekt für bean namen ' Befehl‘als Anfrage Attribut org.springframework.web.servlet.support.BindStatus. (BindStatus.java:141) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.get

My Web .xml sieht aus wie dies:

Urform Erstellt Web Application Hello World org.springframework.web.servlet.DispatcherServlet Hello World / contextConfigLocation /WEB-INF/HelloWorld- servlet.xml org.springframework.web.context.ContextLoaderListener My Hello World-servlet.xml wie folgt aus:
<context:component-scan base-package="com.programcreek.helloworld.controller" /> 

<bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix"> 
     <value>/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp</value> 
    </property> 
</bean> 

Mein student.jsp sieht wie folgt aus:

 <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<html> 
<head> 
    <title>Spring MVC Form Handling</title> 
</head> 
<body> 

<h2>2 Student Information 2</h2> 


<form:form method="POST" action="/HelloWorld/addStudent" > 
    <table> 
    <tr> 
     <td><form:label path="name">Name</form:label></td> 
     <td><form:input path="name" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="age">Age</form:label></td> 
     <td><form:input path="age" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="id">id</form:label></td> 
     <td><form:input path="id" /></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <input type="submit" value="Submit"/> 
     </td> 
    </tr> 
</table> 
</form:form> 
</body> 
</html> 

und meine StudentController.java wie folgt:

package com.programcreek.helloworld.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.validation.BindingResult; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
@RequestMapping("/") 
public class StudentController { 

    @RequestMapping(value = "/student", method = RequestMethod.GET) 
    public ModelAndView student() { 

     return new ModelAndView("student", "command2", new Student()); 
    } 



    @RequestMapping(value = "/addStudent", method = RequestMethod.POST) 
    public String addStudent(@ModelAttribute("HelloWorld")Student student, 
    ModelMap model) { 

     System.out.println("Controller2"); 
     model.addAttribute("name", student.getName()); 
     model.addAttribute("age", student.getAge()); 
     model.addAttribute("id", student.getId()); 

     return "result"; 
    } 
} 

ich immer eine Menge von Beispielen und Transfer Probe-Codes meine Eclipse lesen, um zu versuchen, aber für dieser Fall eines Schülers, der einem alten Beispiel entnommen wurde (Frühling 2.4).

Danke, dass Sie mir geholfen haben, die Probleme zu lösen. (Ich weiß um die feder Dokumentation)

Antwort

1

Ich habe Ihren Code auf meinem System ausgeführt

Sie kehren von Ihrer Controller-Klasse

return new ModelAndView("student", "command2", new Student()); 

, so dass Sie Karte haben " command2 "mit dem commandName in Form von Student.jsp

command = "command2" in Ihrem student.jsp wie unten

<form:form method="POST" commandName="command2" action="/HelloWorld/addStudent" > 

vollständigen Quellcode des Projekts:

student.java

package com.programcreek.helloworld.controller; 

public class Student { 
     private Integer age; 
     private String name=""; 
     private Integer id; 
     public Student(){ 

     } 
     public void setAge(Integer age) { 
      this.age = age; 
     } 
     public Integer getAge() { 
      return age; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 
     public String getName() { 
      return name; 
     } 

     public void setId(Integer id) { 
      this.id = id; 
     } 
     public Integer getId() { 
      return id; 
     } 
    } 

StudentController.java

package com.programcreek.helloworld.controller; 

    import org.springframework.stereotype.Controller; 
    import org.springframework.ui.ModelMap; 
    import org.springframework.validation.BindingResult; 
    import org.springframework.web.bind.annotation.ModelAttribute; 
    import org.springframework.web.bind.annotation.RequestMapping; 
    import org.springframework.web.bind.annotation.RequestMethod; 
    import org.springframework.web.servlet.ModelAndView; 

    @Controller 
    @RequestMapping("/") 
    public class StudentController { 

     @RequestMapping(value = "/student", method = RequestMethod.GET) 
      public ModelAndView student() { 

       return new ModelAndView("student", "command2", new Student()); 
      } 



      @RequestMapping(value = "/addStudent", method = RequestMethod.POST) 
      public ModelAndView addStudent(@ModelAttribute("HelloWorld")Student student) { 
       ModelAndView modelAndView = new ModelAndView(); 

       System.out.println("Controller2"); 
       modelAndView.addObject("name", student.getName()); 
       modelAndView.addObject("age", student.getAge()); 
       modelAndView.addObject("id", student.getId()); 
       modelAndView.setViewName("result"); 


       return modelAndView; 
      } 
     } 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
id="WebApp_ID" version="3.0"> 



    <servlet> 
     <servlet-name>DefaultServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>DefaultServlet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 


</web-app> 

DefaultServlet-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd"> 

    <context:component-scan base-package="com.programcreek.helloworld.controller" /> 
    <!-- <context:component-scan base-package="com.packt.webstore.domain.repository.impl" /> 
    <context:component-scan base-package="com.packt.webstore.service.impl" /> --> 

    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 


</beans> 

student.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 

<html> 
<head> 
    <title>Spring MVC Form Handling</title> 
</head> 
<body> 

<h2>2 Student Information 2</h2> 


<form:form method="POST" commandName="command2" action="addStudent" > 
    <table> 
    <tr> 
     <td><form:label path="name">Name</form:label></td> 
     <td><form:input path="name" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="age">Age</form:label></td> 
     <td><form:input path="age" /></td> 
    </tr> 
    <tr> 
     <td><form:label path="id">id</form:label></td> 
     <td><form:input path="id" /></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <input type="submit" value="Submit"/> 
     </td> 
    </tr> 
</table> 
</form:form> 
</body> 
</html> 

Verzeichnisstruktur:

directory structure

Ausführungsergebnis

execution result

+0

hallo ... warum du downvote auf meine Antwort geben ausgeführt ich diesen Code und bekam gleiche Ausnahme java.lang.IllegalStateException: Weder BindingResult noch ebene Zielobjekt für ‚Befehl‘ Bean Namen nach command = "command2 Hinzufügen "in student.jsp hat es gut funktioniert ich kann den vollen Quellcode von jeder xml und java Klasse einfügen –

+0

Hallo Kunal, ich habe dir keinen Downvote gegeben. Ich bin dankbar für deine Hilfe. Es klappt. Danke dir – Timo

+0

mein Vergnügen :-) Du kannst diese Antwort akzeptieren, wenn es dir geholfen hat. Vielen Dank :) –

Verwandte Themen