セッター メソッドを使用する代わりに、コントローラーで依存性注入を実行しようとしていますが、うまくいきませんでした。
私が望むこと: springframework 3.1 を使用するコントローラー クラスで、ドメイン モデルをフォームにバインドするだけです。
私のドメインクラス:
public class Person {
private String name;
@Autowired
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
私のjsp(person-get):
<form action="test-person" method="post">
<table cellpadding="0" cellspacing="0" align="center">
<tr>
<td> <b> NAME: </b> </td>
<td> <input type="text" id="name" name="name"> </td>
</tr>
</table>
</form>
私のコントローラー:
@Controller
public class PersonController {
@RequestMapping(value = "test-person", method = RequestMethod.GET)
public String loadViewGet() {
return "person-get";
}
@RequestMapping(value = "test-person", method = RequestMethod.POST)
public String doPost(Person person, Model model) {
model.addAttribute("person", person);
return "person-post";
}
}
そして、ユーザーが入力した人物の名前を示す最後の jsp (person-post):
<table cellpadding="0" cellspacing="0" align="center">
<tr>
<td> <b> NAME: </b> </td>
<td> ${person.name} </td>
</tr>
</table>
スローされた例外:
java.lang.NoSuchMethodException: models.Person.<init>()
java.lang.Class.getConstructor0(Unknown Source)
java.lang.Class.getDeclaredConstructor(Unknown Source)
org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttri bute(ModelAttributeMethodProcessor.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodPr ocessor.createAttribute(ServletModelAttributeMethodProcessor.java:81)
org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgu ment(ModelAttributeMethodProcessor.java:103)
org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resol veArgument(HandlerMethodArgumentResolverComposite.java:75)
org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValu es(InvocableHandlerMethod.java:156)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(Invo cableHandlerMethod.java:117)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod .invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter. invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter. handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(Abst ractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java :923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java: 852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.ja va:882)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
br.gov.sp.mococa.filtros.FiltroDeConexao.doFilter(FiltroDeConexao.java:31)
春はパラメーターなしのデフォルトのコンストラクターを探していると思います。なぜそれが起こっているのですか?
ありがとう!