bean名称'user'的BindingResult和普通目标对象都不能作为请求属性使用
Apr 05 2019 9:18:13 AM org.apache.catalina.core.StandardWrapperValve调用严重:在路径[/DataVisualization]的上下文中servlet[SpringController]的servlet.service()引发异常[处理JSP page/WEB-INF/Views/AddUserForm.JSP第23行时发生异常
StackTrace:]具有根原因java.lang.IllegalStateException:bean名称'user'的BindingResult和普通目标对象都不能作为请求属性在org.springframework.web.servlet.support.bindStatus中使用。(bindStatus.java:153)
package com.datavisualization.controller;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.datavisualization.model.User;
@Controller
@RequestMapping("restApi/dataVizualization")
public class GetUserData {
private static Logger logger=Logger.getLogger(GetUserData.class);
@RequestMapping(value="adduser")
public String addUserForm()
{
logger.info("===addUserForm ");
return "AddUserForm";
}
@RequestMapping(value="save", method=RequestMethod.POST)
public void saveUser(@ModelAttribute("user") User user,BindingResult result,Model model)
{
System.out.println("=== save user method");
}
}
模型类:包com.datavisualization.model;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
public User() {
super();
// TODO Auto-generated constructor stub
}
public User( String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h3 id="form_header" class="text-warning" align="center">User Form</h3>
<div> </div>
<!-- User input form to add a new user or update the existing user-->
<c:url var="saveUrl" value="/restApi/dataVizualization/save" />
<form:form id="user_form" modelAttribute="user" method="POST" action="${saveUrl}">
<label for="user_name">Enter Name: </label>
<form:input id="user_name" cssClass="form-control" path="name" />
<div> </div>
<button id="saveBtn" type="submit" class="btn btn-primary">Save</button>
</form:form>
</div>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</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-servlet.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>
<!-- Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd“>
<context:component-scan base-package="com.datavisualization" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
下面的方法调用了用户表单,但是这里没有提到JSP中使用的model属性,这就是为什么会出现错误的原因。因为在您的JSP页面中不知道用户是什么。因此您需要在控制器中提到用户属性
@RequestMapping(value="adduser")
public String addUserForm()
{
logger.info("===addUserForm ");
return "AddUserForm";
}
解决方法是,将方法更改为
@RequestMapping(value="adduser")
public String addUserForm(Model model)
{
logger.info("===addUserForm ");
model.addAttribute("user", new User());
return "AddUserForm";
}
并将@requestmapping(“/restapi/datavizualization”)
更改为映射中错过的@requestmapping(“/restapi/datavizualization”)
。这是一种最佳做法。
祝你好运
本文向大家介绍jsp分页显示完整实例,包括了jsp分页显示完整实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jsp分页显示的实现方法。分享给大家供大家参考。 具体实现方法如下: 希望本文所述对大家的jsp程序设计有所帮助。
我试图创建一个简单的Spring Boot应用程序 我创建了Spring Boot应用程序类、配置类、控制器类和index.html。 我添加了Thymeleaf依赖项,并将html页面放在resources文件夹下(\src\main\resources\templates\index.html) 但当我运行应用程序时,它会给出一个错误 Thymeleaf的WebConfiguration in
本文向大家介绍简单实现JSP分页显示效果,包括了简单实现JSP分页显示效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了JSP分页显示效果的具体代码,供大家参考,具体内容如下 1、mysql的limit关键字 (DAO) tablename 就是要分页显示的那张表的名称; startPoint 就是起始的位置 -1; numberPerPage 就是一页显示的条数。 例如: sel
我已经在后端计算了表单提交总量,现在我需要在JSP页面上的“total submission”标记旁边显示它。我尝试了各种方法,但似乎都不管用。在jsp页面上显示长值的最佳方法是什么?
我对Spring Boot框架非常陌生,我想澄清一下为什么我会面临这个问题。 问题:. jsp文件未显示在正确的endpoint。 这是我的控制器类 这是我的申请表。属性类 这是我家里的东西。jsp文件 最后,项目目录 当我启动spring boot应用程序时,网站看起来像这样 为什么你认为我看不到家的内容。jsp文件? 感谢您的帮助。 最好, PS:我已经在pom中添加了Tomcat Jaspe