【问题标题】:Getting Error in Spring Mvc在 Spring Mvc 中出现错误
【发布时间】:2015-07-09 08:50:07
【问题描述】:

我收到以下错误....

java.lang.IllegalStateException: **Neither BindingResult nor plain target object for bean name 'course' available as request attribute**
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
    at 

模型类:

@Entity
@Table(name="course" ,schema = "practise5")
public class Course implements java.io.Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;



    @GeneratedValue(strategy=GenerationType.AUTO)
    @Id
    private int id;

     @Column(name="Name")
        private String Name;

    @ManyToMany(mappedBy="courseSet")
    private Set<Person> personSet;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }



    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public Set<Person> getPersonSet() {
        return personSet;
    }

    public void setPersonSet(Set<Person> personSet) {
        this.personSet = personSet;
    }

}

控制器:

@RequestMapping(value="/addCourse",method= RequestMethod.POST)
public @ResponseBody String addCourse(@ModelAttribute("course") Course course, Model model)
{

    courseServise.addcourse(course);

    return "redirect:addEmployee";
}

jsp:

<form:form commandName="course" action="addCourse" method="POST">
<form:input path="CourseName" id="course" required="required"/>
<input type="submit" value="Submit">
</form:form>

.................................................. ..................................................... ..................................................... .........

<context:annotation-config />
 <context:component-scan base-package="com.spring" />

<mvc:annotation-driven />
<mvc:resources location="/WEB-INF/" mapping="/**" />


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

<bean id="messageSource"
    class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
    <property name="basename" value="resources/messages" />
    <property name="defaultEncoding" value="UTF-8" />
</bean>

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
    p:location="/WEB-INF/jdbc.properties" />

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
    p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />

<tx:annotation-driven />
<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <list>
            <value>com.spring.model</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${jdbc.dialect}</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
            <!-- <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.use_sql_comments">true</prop> -->
        </props>
    </property>
</bean>

【问题讨论】:

  • 请解释您何时收到该错误以及堆栈跟踪是什么
  • 需要堆栈跟踪来理解问题。
  • 我只是使用 spring mvc 和 hibernate 将值存储在数据库中。有一个课程名称的输入并使用 courseServise 我将它添加到数据库中。不知道 stacttrace。
  • 你在spring应用上下文中定义了bean吗?
  • Andreas Hartmann 是的,我定义了它。

标签: java spring spring-mvc


【解决方案1】:

我只是在我的控制器中添加以下代码...

第二件事是您必须首先将您的 index.jsp 文件重定向到其他文件...

@RequestMapping(method = RequestMethod.GET)
public String addEmployee(@ModelAttribute("a") A a, Model model,HttpServletRequest request) 
{

    return "addEmployee";
}

【讨论】:

    【解决方案2】:

    您的 JSP 文件中的 URL 不匹配。 更改 JSP 文件中的这一行:

    <form:form commandName="course" action="addCourse" method="POST"> 
    

    为:

    <form:form commandName="course" action="/addCourse" method="POST">
    

    否则,您可以更改控制器上的映射:

    @RequestMapping(value="/addCourse",method= RequestMethod.POST) 
    

    为:

    @RequestMapping(value="addCourse",method= RequestMethod.POST)
    

    【讨论】:

      【解决方案3】:

      正如this 帖子中所说,加载 jsp 本身时可能会发生错误,并且 由于以下原因,更多的过度绑定可能会失败

      绑定结果可以通过BindingResult接口查看, 扩展 Errors 接口:参见 getBindingResult() 方法。 缺少字段和属性访问异常将转换为 FieldErrors,收集在 Errors 实例中,使用如下 错误代码:

      > Missing field error: "required" 
      > Type mismatch error: "typeMismatch"
      > Method invocation error: "methodInvocation"
      

      所以请检查您可能错过的任何类型不匹配或字段,因为我曾亲自遇到过这个问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 1970-01-01
        • 2022-01-21
        • 2018-06-04
        • 1970-01-01
        相关资源
        最近更新 更多