出于某种原因,即使在查看了此处的多个示例之后,我似乎也无法解决此问题。
我的 Controller 产生此错误:“bean 名称“命令”的 BindingResult 和普通目标对象都不能作为请求属性使用”。
这是我的 Controller :
package net.codejava.Spring;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@SessionAttributes
public class MainController {
@RequestMapping(value="/", method = RequestMethod.GET)
public ModelAndView visitHome() {
return new ModelAndView("param","command",new params());
//return new ModelAndView("index");
}
@RequestMapping(value="/HelloWorld/main", method = RequestMethod.GET)
public ModelAndView visitAdmin() {
JasperToPDF.generate();
ModelAndView model = new ModelAndView("main");
model.addObject("title", "Main Page");
model.addObject("message", "You are on the main page.");
return model;
}
@RequestMapping(value="/HelloWorld/summary", method = RequestMethod.GET)
public ModelAndView visitSummary() {
return new ModelAndView("param","command",new params());
}
@RequestMapping(value="/HelloWorld/Detailed", method = RequestMethod.GET)
public ModelAndView visitSummary() {
return new ModelAndView("Detailed");
}
@RequestMapping(value="/HelloWorld/generated", method = RequestMethod.POST)
public String generateSummary(@ModelAttribute("command")params param, ModelMap model)
{
System.out.println(param.getSD());
return ("generated");
}
}
这是我的摘要.jsp:
<%@ page language="java" session="true" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@include file='template.jsp'%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<title>Summary</title>
</head>
<body>
<form:form action="/HelloWorld/generated.jsp" method="post" commandName="command">
<form:select class="form-control" path="dept" commandName="command">
<option selected="selected" value="0">Select Department</option>
<option value="1">All</option>
<option value="2">HR</option>
<option value="3">IT</option>
<option value="4">Security</option>
</form:select>
</br></br></br></br>
<div class="form-group">
<form:label for="usr" path="sd">Starting date(dd-mm-yyyy):</form:label>
<form:input type="text" path="sd" class="form-control" id="usr"/>
</div>
<div class="form-group">
<form:label for="usr" path="sd">Ending date(dd-mm-yyyy):</form:label>
<form:input type="text" path="ed" class="form-control" id="usr"/>
</div>
<button type="submit" class="btn btn-primary">Generate Report</button>
</form:form>
</body>
</html>
这是 web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Spring Security Basic XML</display-name>
<servlet>
<servlet-name>SpringController</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringController</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-security.xml
</param-value>
</context-param>
<!-- Spring Security Filter -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
最佳答案
您的summary.jsp
包含command
作为form
的commandName
。因此在访问它之前您必须调用一个请求,它为您提供一个名为 command
的 bean 对象。
在您的代码中,如果 HelloWorld/summary
是访问 summary.jsp
的请求,那么在 ModelAndView
中您必须提及 将
名称视为摘要
而不是命令
。
return new ModelAndView("summary","command",new Params());
Summary.jsp
<form:form action="/HelloWorld/generated.jsp" method="post" commandName="command">
<form:select class="form-control" path="dept">
<option selected="selected" value="0">Select Department</option>
<option value="1">All</option>
<option value="2">HR</option>
<option value="3">IT</option>
<option value="4">Security</option>
</form:select>
</br></br></br></br>
<div class="form-group">
<form:label for="usr" path="sd">Starting date(dd-mm-yyyy):</form:label>
<form:input type="text" path="sd" class="form-control" id="usr"/>
</div>
<div class="form-group">
<form:label for="usr" path="sd">Ending date(dd-mm-yyyy):</form:label>
<form:input type="text" path="ed" class="form-control" id="usr"/>
</div>
<button type="submit" class="btn btn-primary">Generate Report</button>
Controller
@RequestMapping(value="/HelloWorld/Summary", method = RequestMethod.GET)
public ModelAndView visitSummary() {
return new ModelAndView("Summary","command",new Params());
}
Params.java
private String sd;
private String dept;
private String ed;
//getter setter
和 URL:localhost:****/Helloworld/Summary
更新
因此您在 URL 中看不到 *.jsp
,这是因为您在 servlet 映射中仅映射了 /
。
<url-pattern>/</url-pattern>
这表示 DispatcherServlet
仅针对 /requests
出现,如果请求中包含路径信息
,那么它将不会到达您的 >请求映射
。
因此,要么将模式更改为 /**
或 /*.jsp
,要么更改访问方式。
关于java - Spring MVC 生成 "Neither BindingResult nor plain target object exception for bean name ' 命令'可用作请求属性”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39119995/