java - 将特定值从 jsp 传递到 Spring mvc 控制器以查找特定记录
问题描述
使用@cotroller 类创建spring mvc 项目.. 创建患者实体、DAO 层、服务层和控制器.. 在我的代码中一切都很完美。我正在努力将单个值从 jsp 页面传递给控制器,这是我的前端控制器类代码:
@Controller
@RequestMapping("/patient")
public class PatientController {
@Autowired
PatientService patientService;
@RequestMapping(value = "/showpatient/{tokenNumber}")
public ModelAndView getProduct(@PathVariable int tokenNumber) {
Patient patient = patientService.patientVerifyByTokenumber(tokenNumber);
return new ModelAndView("VerifyingPatient", "patient", patient);
}
}
这是我的
Jsp
页面代码.. 在 tokenNumber 的帮助下,我必须找到特定的患者。我正在尝试在jsp
页面中传递令牌编号,但出现异常。
<form:form action="showpatient/${patient.tokenNumber}" modelAttribute="patient"
method="GET">
Enter the token number
<form:input path="tokenNumber"></form:input>
<input type="submit" value="verify" />
</form:form>
<b>Token Number:</b> ${patient.tokenNumber}<br>
<b>Patient Name:</b>${patient.patientName}<br>
<b>patient Age:</b>${patient.patientAge}<br>
<b>Phone Number:</b>${patient.phoneNumber}<br>
当我点击验证按钮时,得到这种类型的异常:
Oct 10, 2018 10:01:48 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [application] in context with path [/SpringMVC_Assesment] threw exception [An exception occurred processing JSP page [/WEB-INF/views/VerifyingPatient.jsp] at line [48]
45: <form:form action="showpatient/${patient.tokenNumber}" modelAttribute="patient"
46: method="GET">
47: Enter the token number
48: <form:input path="tokenNumber"></form:input>
49: <input type="submit" value="verify" />
50: </form:form>
51:
Stacktrace:] with root cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'patient' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
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.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
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.VerifyingPatient_jsp._jspx_meth_form_005finput_005f0(VerifyingPatient_jsp.java:269)
at org.apache.jsp.WEB_002dINF.views.VerifyingPatient_jsp._jspx_meth_form_005fform_005f0(VerifyingPatient_jsp.java:227)
at org.apache.jsp.WEB_002dINF.views.VerifyingPatient_jsp._jspService(VerifyingPatient_jsp.java:153)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:470)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:395)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:316)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1257)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1037)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:980)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
解决方案
试试下面的代码。
@RequestMapping(value = "/showpatient/{tokenNumber}")
public String getProduct(@PathVariable int tokenNumber, Model model) {
Patient patient = patientService.patientVerifyByTokenumber(tokenNumber);
model.addAttribute("patient", patient);
return "VerifyingPatient";
}
推荐阅读
- java - 随机的 IllegalArgumentException
- unity3d - 类型“Bunny”已经定义了一个名为“OnTriggerEnter2D”的成员,具有相同的参数类型 | 如何在单个脚本中进行多次碰撞
- php - 如何确保文件的 MIME 类型是 PHP Laravel 中的任何图像格式?
- python - 如何为句子级嵌入设置 LSTM 的输入形状
- c# - c#用户控件标签中的windows窗体TextBox onChange事件,用于用户控件的自定义文本属性
- testing - 在超级账本结构的测试网络中创建通道失败
- reporting-services - SSRS 报告 - 查找当前正在呈现的 tablix
- excel - 通过电子邮件地址进行 VLOOKUP 搜索在 LibreOffice 或 Google 表格中不起作用
- azure - 什么时候 Azure IoT Hub 比 IoT Central 更受欢迎?
- spring-boot - 签名的 JWT 被拒绝:需要另一个算法,或者找不到匹配的密钥