2016-10-25 4 views
0

私はその既知の問題を見ていますが、投稿された解決策は私の問題を解決しません。私は私の最初の休止状態のアプリを展開しようと、私は次の例外を取得:Beanクラスの[id]プロパティが無効です[java.lang.Class] SpringMVC + Hibernate

ERROR: org.springframework.web.servlet.tags.form.LabelTag - Invalid property 'id' of bean class [java.lang.Class]: Bean property 'id' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 
org.springframework.beans.NotReadablePropertyException: Invalid property 'id' of bean class [java.lang.Class]: Bean property 'id' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 
    at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:725) 
    at org.springframework.beans.BeanWrapperImpl.getPropertyValue(BeanWrapperImpl.java:716) 
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:149) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) 
    at org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:130) 
    at org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:120) 
    at org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:90) 
    at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) 
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) 
    at org.apache.jsp.WEB_002dINF.views.person_jsp._jspx_meth_form_005flabel_005f0(person_jsp.java:334) 
    at org.apache.jsp.WEB_002dINF.views.person_jsp._jspx_meth_c_005fif_005f0(person_jsp.java:291) 
    at org.apache.jsp.WEB_002dINF.views.person_jsp._jspx_meth_form_005fform_005f0(person_jsp.java:208) 
    at org.apache.jsp.WEB_002dINF.views.person_jsp._jspService(person_jsp.java:135) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:747) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337) 
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267) 
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1217) 
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

は、これらは、私たちが関わるファイルの内容です:

<c:url var="addAction" value="/person/add" ></c:url> 

<form:form action="${addAction}" commandName="person"> 
    <table> 
     <c:if test="${!empty person.name}"> 
      <tr> 
       <td> 
        <form:label path="id"> // <-- this line causes exception 
         <spring:message text="ID"/> 
        </form:label> 
       </td> 
       <td> 
        <form:input path="id" readonly="true" size="8" disabled="true" /> 
        <form:hidden path="id" /> 
       </td> 
      </tr> 
     </c:if> 

person.jsp Person.java - 私の実体

package com.crudvoid.model; 

import lombok.Data; 

import javax.persistence.*; 

@Data 
@Entity 
@Table(name = "Person") 
public class Person { 

    @Id 
    @Column(name = "id") 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Integer id; 

    private String name; 

    private String country; 
    } 

PersonController.java

package com.crudvoid; 

import com.crudvoid.model.Person; 
import com.crudvoid.service.PersonService; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
public class PersonController { 
    private PersonService personService; 

    @Autowired(required = true) 
    @Qualifier(value = "personService") 
    public void setPersonService(PersonService personService) { 
     this.personService = personService; 
    } 

    @RequestMapping(value = "/person", method = RequestMethod.GET) 
    public String listPersons(Model model) { 
     model.addAttribute("person", Person.class); 
     model.addAttribute("listPersons", this.personService.listPersons()); 

     return "person"; 
    } 

    @RequestMapping(value = "/person/add", method = RequestMethod.POST) 
    public String addPerson(@ModelAttribute("person") Person person) { 
     if(person.getId() == 0) { 
      this.personService.addPerson(person); 
     } 
     else { 
      this.personService.updatePerson(person); 
     } 

     return "redirect:/person"; 
    } 

    @RequestMapping("/remove/{id}") 
    public String removePerson(@PathVariable("id") int id) { 
     this.personService.removePerson(id); 

     return "redirect:/person"; 
    } 

    @RequestMapping("/edit/{id}") 
    public String editPerson(@PathVariable("id") int id, Model model) { 
     model.addAttribute("person", this.personService.getPersonById(id)); 
     model.addAttribute("listPersons", this.personService.listPersons()); 

     return "person"; 
    } 
} 

これは私の考えです。必要に応じてさらに投稿します。私は一日中何が間違っているか把握しようと怒っていた。助けてください!

私はsetter/getterではありません。コンパイル時にsetterとgettersを作成するだけでなく、Lombokアドオンを使用します。

乾杯、無効

+1

でラインにlistPersons()

 model.addAttribute("person", Person.class); 

を交換しましたPersonController'の 'model.addAttribute(" person "、Person.class);という行です。おそらく、 'model.addAttribute(" person "、新しいPerson()); –

+0

それは私の問題を解決した...ありがとう:) – voidmat

答えて

2

コメントから、解決策は、私はあなたがやろうとしているのか理解していない

 model.addAttribute("person", new Person()); 
関連する問題