2017-12-03 2 views
0

html 형식의 데이터를 데이터베이스에 게시해야합니다. 나는 springboot와 thymeleaf로 gradle 프로젝트를 가지고있다. 나는 자바 객체 클래스 마녀에는 ID, 이름, 묘사, 교사 및 분이있다. html에서는 모덜 양식을 사용하여 ID 이외의 모든 것을 요청합니다.Spring + Thymeleaf : 모달 형식의 데이터 게시

@Controller 
public class ScheduleController { 

    @Autowired 
    private ClassService classService; 
    @Autowired 
    private StudentService studentService; 



    @RequestMapping(value = "/addClass", method = RequestMethod.POST) 
    public String addClass(@RequestAttribute("class") Class newClass, Model model) { 
     classService.addClass(newClass); 
     return "main"; 
    } 

오류 메시지가, 내가 얻을 수 있습니다 : : java.lang.IllegalStateException : BindingResult도 일반 대상 객체 어느

main.html

<!DOCTYPE HTML> 
    <html xmlns:th="http://www.thymeleaf.org"> 
    <head> 
     <title>Class Scheduler</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <link rel="stylesheet" type="text/css" href="webjars/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"/> 
     <script type="text/javascript" src="webjars/jquery/3.2.1/jquery.min.js"></script> 
     <script type="text/javascript" src="webjars/bootstrap/4.0.0-beta.2/js/bootstrap.bundle.min.js"></script> 

    </head> 
    <body> 
    <div class="container"> 
     <h2>Class Scheduler</h2> 
     <div class="text-right"> 
      <button type="button" class="btn btn-success" data-toggle="modal" data-target="#addClassModal">Add new class</button> 
     </div> 
     <div class="modal fade" id="addClassModal" tabindex="-1" role="dialog" aria-labelledby="addClassModalLabel" aria-hidden="true"> 
      <div class="modal-dialog" role="document"> 
       <div class="modal-content"> 
        <div class="modal-header"> 
         <h5 class="modal-title" id="addClassModalLabel">Add new class</h5> 
         <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
          <span aria-hidden="true">&times;</span> 
         </button> 
        </div> 
        <div class="modal-body"> 
         <form th:action="@{/addClass}" th:object="${class}" method="post"> 
          <div class="form-group"> 
           <label for="name">Name:</label> 
           <input type="text" class="form-control" id="name" th:value="*{name}"/> 
          </div> 
          <div class="form-group"> 
           <label for="description">Description:</label> 
           <input type="text" class="form-control" id="description" th:value="*{description}"/> 
          </div> 
          <div class="form-group"> 
           <label for="teacher">Teacher:</label> 
           <input type="text" class="form-control" id="teacher" th:value="*{teacherName}"/> 
          </div> 
          <div class="form-group"> 
           <label for="minutes">Minutes:</label> 
           <input type="number" class="form-control" id="minutes" th:value="*{timeMinutes}"/> 
          </div> 
          <input type="submit" value="Submit" /> 
         </form> 
        </div> 
       </div> 
      </div> 
      </div> 
     </div> 
    </body> 
</html> 

그리고 내 컨트롤러는 다음과 같다 요청 속성으로 사용할 수있는 bean 이름 'class'에 대해.

내가 뭘 잘못하고 있니?

편집 : 내 ClassService은 다음과 같습니다 : 여기

@Service 
public class ClassService{ 

    private static final BeanPropertyRowMapper<Class> CLASS_ROW_MAPPER = BeanPropertyRowMapper.newInstance(Class.class); 

    @Autowired 
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate; 


    public void addClass(final Class newClass) { 
     MapSqlParameterSource in = new MapSqlParameterSource(); 
     in.addValue("id", newClass.getId()); 
     in.addValue("name", newClass.getName()); 
     in.addValue("description", newClass.getDescription()); 
     in.addValue("teacher_name", newClass.getTeacherName()); 
     in.addValue("time_minutes", newClass.getTimeMinutes()); 
     namedParameterJdbcTemplate.update("INSERT INTO class(name, description, teacher_name, time_minutes) values(:name,:description,:teacher_name,:time_minutes)", in); 
    } 
+0

ClassService 클래스를 게시 할 수 있습니까? – TruckDriver

답변

0

public String addClass(@RequestAttribute("class") Class newClass, Model model) { 

사용 ModelAttribute 모 데르 대신 RequestAttribute

public String addClass(@ModelAttribute("class") Class newClass, Model model) { 

또한, 컨트롤러 클래스에서 것은의 인스턴스를 돌려 ModelAttribute와 관련된 클래스

@ModelAttribute(value = "class") 
public Class getClass() 
{ 
    return new Class(); 
} 
+0

도움이되지 못함 : (여전히 같은 오류 메시지입니다.) – Jack69

+0

@ Jack69 : 내 대답 업데이트, 지금 확인 – TruckDriver

+0

고맙습니다! 작동합니다. – Jack69