環境: SpringMVC Maven Netbeans Glassfish
SEVERE: Bean 名 'user' の BindingResult もプレーン ターゲット オブジェクトも要求属性として使用できません.BindStatus.(BindStatus.java:141) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178) で org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath( org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag の org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:164) のautogenerateId(AbstractDataBoundFormElementTag.java:151) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:142) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag. java:126) org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421) で org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) でorg.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) で org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) で org.apache.jsp .user_jsp._jspx_meth_form_input_0(user_jsp.java:178) org.apache.jsp.user_jsp._jspx_meth_form_form_0(user_jsp.java:120) で org.apache.jsp.user_jsp._jspService(user_jsp.java:76) で org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase) .java:111) で javax.servlet.http.HttpServlet.service(HttpServlet.java:847) で org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403) で org.apache.jasper.servlet. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378) の JspServlet.serviceJspFile(JspServlet.java:492) org.apache の javax.servlet.http.HttpServlet.service(HttpServlet.java:847) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) の .catalina.core.StandardWrapper.service(StandardWrapper.java:1539) org.apache.catalina.core.StandardContextValve.org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) の invoke(StandardContextValve.java:175) com.sun の org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) .enterprise.web.WebPipeline.invoke(WebPipeline.java:98) com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java) :162) org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) で org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) で com.sun.enterprise.v3。 services.impl.ContainerMapper.service(ContainerMapper.java:174) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) ) com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) で com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) で com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask. java:59) com.sun.grizzly.ContextTask.run(ContextTask.java:71) で、com.sun.grizzly.util で。AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722)
ユーザー.jsp:
<form:form action="createuser.do" modelAttribute="user" method="POST">
<table align="center" >
<tr>
<td>User Name :</td>
<td><form:input path="userName"/></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form:form>
私のコントローラー:
@Controller
public class UserController {
@RequestMapping(value = "/createuser.do", method = RequestMethod.POST)
public void create(@ModelAttribute("user") User user, BindingResult result) {
System.out.print("user name: "+user.getUserName());
}
}
「http://localhost:8080/NBGFMN/user.jsp」にアクセスすると、ブラウザでこのエラーが発生しました
jsp から )を削除するform:input path="userName"
と、送信ボタンをクリックすると jsp が正しく表示され、コンソールは「ユーザー名: null」を出力します。
この同じエラーについてstackoverflowには非常に多くの投稿がありますが、解決策はどれもうまくいきません。
以下のGETメソッドとwelcome.jspを追加しました
@RequestMapping(value = "/welcome.do", method = RequestMethod.GET)
public ModelAndView printHello()
{
ModelAndView m = new ModelAndView("welcome");
m.addObject("ppp", "hello");
return m;
}
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:out value="${ppp}" ></c:out>
</body>
</html>
そして「http://localhost:8080/NBGFMN/welcome.do」にアクセスすると問題なく動作します。
次の GET (ユーザーを作成するため) を追加すると、機能します。
@RequestMapping(value = "/createuser.do", method = RequestMethod.GET)
public String create(ModelMap mm)
{
mm.addAttribute("auser", new User("Andy"));
return "welcome";
}
<body>
<c:out value="${auser.userName}" ></c:out>
</body>
「http://localhost:8080/NBGFMN/createuser.do」にアクセスすると、ブラウザは「Andy」を出力します
しかし、フォーム POST はまだ機能していません。