2017-11-18 8 views
0

봄 mvc에 초보자입니다. MySQL jdbc를 사용하여 봄에 단순한 crud를 만들기 위해 노력하고 있습니다. datamapping 들어 봄 양식을 사용했습니다. 나는 봄 양식을 사용하려고 할 때마다 내가 봄 양식을 제거하고 확인을 보이지만 봄 양식을 사용하여 오류를 보여줍니다 정상적인 양식을 사용할 때마다 오류java.lang.IllegalStateException : BeanName 'userData'의 BindingResult 또는 일반 대상 객체가 요청 속성으로 사용할 수 없음

Error is here

을 보여줍니다. 이 오류는 말한다 java.lang.IllegalStateException : BindingResult도 'userData에'사용할 수 요청 속성으로 콩 이름에 대한 일반 대상 객체 어느

header.jsp를

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>JSP Page</title> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 

    </head> 
    <body> 
     <nav class="navbar navbar-inverse"> 
      <div class="container-fluid"> 
       <div class="navbar-header"> 
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> 
         <span class="icon-bar"></span> 
         <span class="icon-bar"></span> 
         <span class="icon-bar"></span> 
        </button> 
        <a class="navbar-brand" href="#">SpringCRUDDemo</a> 
       </div> 
       <div class="collapse navbar-collapse" id="myNavbar"> 
        <ul class="nav navbar-nav"> 
         <li><a href="<c:url value='/'/>">Home</a></li> 
         <li><a href="<c:url value='/view/'/>">View</a></li> 
         <li><a href="#">Update</a></li> 
         <li><a href="#">Delete</a></li> 
        </ul> 
        <ul class="nav navbar-nav navbar-right"> 
         <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li> 
         <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li> 
        </ul> 
       </div> 
      </div> 
     </nav> 

index.jsp를

<%@include file="./shared/header.jsp" %> 

<div class="container"> 
    <form:form commandName="userData" action="#" method="post" enctype="multipart/form-data"> 
     <label for="firstname" class="label">Enter your first name</label> 
     <form:input path="firstName"/> 
    </form:form> 
</div> 

서블릿 클래스

package com.nishan.springcruddemo.servlet; 

import com.nishan.springcruddemo.daoimp.CustomerDaoImp; 
import com.nishan.springcruddemo.entity.Customer; 
import java.sql.SQLException; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

/** 
* 
* @author Dell 
*/ 
@Controller 

public class DefaultController { 

    @Autowired 
    CustomerDaoImp customerDaoImp; 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String index() { 
     return "index"; 
    } 

    @RequestMapping(value = "/insert", method = RequestMethod.POST) 
    public String save(@ModelAttribute("userData") Customer customer) { 
     try { 
      customerDaoImp.insert(customer); 
     } catch (ClassNotFoundException | SQLException ex) { 
      System.out.println(ex.getMessage()); 
     } 

     return "redirect:/index"; 
    } 

    @RequestMapping(value = "/view", method = RequestMethod.GET) 
    public String viewCustomer() { 
     return "view-customer"; 
    } 
} 

답변

0

단일 값을 얻으려면 @RequestParam을 사용해야합니다.

하려면 모델 클래스를 사용하여 양식 데이터를 바인딩하십시오. 모델 (POJO)을 userData commandName = "userData".CommandName 및 ModelClass 이름으로 모두 작성해야합니다.

firstName과 둘 다 동일한 필드. 그러면 폼 데이터가 Pojo로 바인딩됩니다. 컨트롤러 클래스에 올 것입니다.

도움이되기를 바랍니다.