Spring MVC @ModelAttribute 方法返回“错误请求”400

2023-12-07

再会。我遇到一个问题:我尝试发送带有某些属性的 POST 请求,但收到“错误请求”响应。

这是我的控制器:

@Controller
@RequestMapping("/group")
public class GroupController {

   private static org.apache.log4j.Logger logger = org.apache.log4j.Logger
     .getLogger(GroupController.class);

   @Autowired
   private GroupService                   groupService;

   @RequestMapping(value = "/add", method = RequestMethod.POST)
   public String addGroup(@ModelAttribute("group") final Group group) {

      GroupController.logger.info("I'm in POST method");
      this.groupService.addGroup(group);
      return "redirect:/student/add";
   }
}

这是我的实体:

@Entity
@Table(name = "university_groups")
public class Group implements Serializable {

   private static final long serialVersionUID = 1L;

   @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "group")
   Set<Student>              students;

   @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   @NotNull
   @JoinColumn(name = "department_id")
   private Department        department;

   @Id
   @Column(name = "group_name", unique = true, nullable = false)
   private String            group;

   public Group() {

   }

   public Group(final String group, final Department deparment) {

      this.group = group;
      this.department = deparment;
   }

   public Department getDepartment() {

      return this.department;
   }

   public String getGroup() {

      return this.group;
   }

   public Set<Student> getStudents() {

      return this.students;
   }

   public void setDepartment(final Department department) {

      this.department = department;
   }

   public void setGroup(final String group) {

      this.group = group;
   }

   public void setStudents(final Set<Student> students) {

      this.students = students;
   }

   @Override
   public String toString() {

      return this.group;
   }

}

这是 JSP 页面的一部分:

<form:form method="POST" action="add" commandName="group">
    <table>
        <tr>
            <td><form:label path="group">
                    <spring:message code="label.student.group" />
                </form:label></td>
            <td><form:input path="group" /></td>
        </tr>
        <tr>
            <td><form:label path="department">
                    <spring:message code="label.student.department" />
                </form:label></td>
            <td><form:select path="department">
                    <form:options items="${departments}" />
                </form:select></td>
            <td><a href="<c:url value="/department/add"/>"><spring:message
                        code="label.student.addDepartment" /></a></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit"
                value="<spring:message code="label.student.addGroup"/>" /></td>
        </tr>
    </table>
</form:form>

这是部门实体:

@Entity
@Table(name = "departments")
public class Department implements Serializable {

   private static final long serialVersionUID = 1L;

   @Id
   @Column(name = "department", unique = true, nullable = false)
   private String            department;

   @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
   @NotNull
   @JoinColumn(name = "faculty_id")
   private Faculty           faculty;

   @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "department")
   private Set<Group>        groups;

   @ManyToMany(fetch = FetchType.LAZY)
   @JoinTable(name = "users_departments", joinColumns = {@JoinColumn(name = "department_id", nullable = false, insertable = true, updatable = true) }, inverseJoinColumns = {@JoinColumn(name = "user_name", nullable = false, insertable = true, updatable = true) })
   private Set<User>         users;

   public Department() {

   }

   public Department(final String department, final Faculty faculty) {

      this.department = department;
      this.faculty = faculty;
   }

   public String getDepartment() {

      return this.department;
   }

   public Faculty getFaculty() {

      return this.faculty;
   }

   public Set<Group> getGroups() {

      return this.groups;
   }

   public Set<User> getUsers() {

      return this.users;
   }

   public void setDepartment(final String department) {

      this.department = department;
   }

   public void setFaculty(final Faculty faculty) {

      this.faculty = faculty;
   }

   public void setGroups(final Set<Group> groups) {

      this.groups = groups;
   }

   public void setUsers(final Set<User> users) {

      this.users = users;
   }

   @Override
   public String toString() {

      return this.department;
   }

}

如果我从控制器方法中删除 @ModelAttribute("group") Final Group 组,则一切正常。 请帮助我,我不明白为什么它不起作用。


除了于尔根·霍尔勒之外没有人理解@ModelAttribute完全。就好像他们创造它是为了吓跑新人一样。

他们确实需要将名称更改为@ReadModelAttribute.

你不需要@ModelAttribute参数注解只是使用POJO作为参数。

您仅因以下原因之一需要它:

  1. Read a flashAttribute
  2. Read a @SessionAttribute
  3. Read a @ModelAttribute method(应该重命名为@WriteModelAttribute)

由于您没有执行任何这些操作,因此请勿使用@ModelAttribute参数注释在这里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC @ModelAttribute 方法返回“错误请求”400 的相关文章

随机推荐

  • KeyListener 如何检测组合键(例如 ALT + 1 + 1)

    我怎样才能让我的定制KeyListener聆听以下组合ALT or CTRL就此而言 不止一把其他钥匙 假设我希望应用程序执行 11 种不同的操作 具体取决于按下的按键组合 ALT 0 ALT 9显然不会造成任何问题 而对于ALT 1 0
  • AngularJS:$watch 选择输入

    我知道我们可以使用 ng change 来解决这个问题 但我想了解为什么 watch 在 select 上不起作用 也许我做错了什么 但似乎我不是唯一一个为此苦苦挣扎的人 这是我的代码 HTML div class list div
  • 强制浏览器清除缓存

    有没有办法在我的页面上放置一些代码 以便当有人访问网站时 它会清除浏览器缓存 以便他们可以查看更改 使用的语言 ASP NET VB NET 当然还有 HTML CSS 和 jQuery 如果这是关于 css and js更改 那么一种方法
  • 如何使用java解码使用openssl aes-128-cbc编码的字符串?

    我在用着openssl编码一个string使用以下命令 openssl enc aes 128 cbc a salt pass pass mypassword lt lt lt stackoverflow 结果给我一个编码字符串 U2Fsd
  • 我可以从 C# 在远程应用程序域中注入线程吗

    我想知道是否可以将线程注入到在单独进程中运行的远程应用程序域中 我的猜测是我可以使用调试接口 ICorDebug 来做到这一点 但我想知道是否还有其他方法 最近宣布 Mono 提供了一项新功能来实现这一点 请参阅此帖子装配注入
  • 调试 VHDL Modelsim 中的迭代限制错误

    我正在 Modelsim 上为 d 触发器编写 VHDL 代码 当我尝试模拟它时出现错误 错误 vsim 3601 在 400 ps 时达到迭代限制 我不确定这意味着什么 但我已经检查了大部分源代码以查找错误 但没有成功 谁能猜出问题可能是
  • 使用反应式扩展创建多个计时器

    我有一个非常简单的类 我用它来轮询目录中的新文件 它有位置 开始监视该位置的时间以及再次检查的时间间隔 以小时为单位 public class Thing public string Name get set public Uri Uri
  • 使用 Spring Security 检查额外参数

    请在Spring Security中给出提示 如何在用户登录期间检查附加参数 例如 不仅要检查 用户名 和 密码 还要检查他是否通过电子邮件链接确认注册 所有数据都存储在数据库中 我可以通过 UserDetailsS ervice 的实现轻
  • 什么CSS元素控制引导滚动间谍活动/悬停?

    http examine com v5x creatine html summary 将鼠标悬停在摘要上 控制它的 CSS 是什么 我好像找不到啊 Active active类 对于大多数 Bootstrap 功能来说都是如此 Hover
  • 为什么我无法用C#向本地数据库(SQL精简版)插入数据?

    我正在 Visual Studio 上做一个项目 我正在使用本地数据库 空的sql server精简版 我选择了数据集并创建了我的表 图像 它有一个主要的自动增量 id 列和一个 nvarchar ImagePath 列 我想在其中插入数据
  • 在 django 中选择不同的单独列?

    我很好奇是否有任何方法可以在 Django 中执行不是 的查询 SELECT FROM 在下面 我正在尝试做一个 SELECT DISTINCT columnName FROM 反而 具体来说 我有一个如下所示的模型 class Produ
  • 同时调用 primefaces 中的多个 bean 方法

    我正在使用 primefaces 4 0 构建一个 Web 应用程序 我想在单击命令按钮时同时调用两个 bean 方法 我尝试使用远程命令
  • 多父树(或有向图)实现sql server 2005

    我需要在 SQL Server 2005 上实现多父树 或有向图 我读过几篇文章 但大多数都使用具有独特根的单亲树 如下所示 My PC Drive C Documents and Settings Program Files Adobe
  • 为什么克隆 DIV 中的 SELECT 在刷新时会出现错误行为?

    我正在使用 jQuery Mobile 的 clone 函数来克隆表单中的 div 这样我就可以拥有可重复的部分 但现在我遇到了嵌套选择的问题 一旦 div 被克隆并且嵌套选择被新的 id 更新 下一次 刷新 后就会发生一些奇怪的事情 发生
  • C++ 中 100 位数字的平方根

    无符号长长 最多可以解出15位数字 有没有办法求a的平方根100位数字 你也可以使用Boost 多精度图书馆 该库为一些流行的多精度实现提供了包装器 include
  • 截图应用,可以在任何视图下截图

    我知道可以在您自己的应用程序中截取屏幕截图 但我想知道是否有可能有一个应用程序允许您在打开应用程序时在任何视图中截取屏幕截图 我很确定这是不可能的 但我只是想仔细检查一下 谢谢 不可以 您无法与 iOS 沙箱之外的其他应用程序进行交互
  • 运行作为 Junit 插件测试运行的测试用例时没有可运行的方法

    我已经为 eclipse RCP 应用程序创建了测试用例 Test public final void testIsCacertsFileExist try URL url new URL https server web services
  • Native SQL(使用 MySQL)与使用 Hibernate ORM 的性能差异?

    我正在将 Spring MVC 用于涉及多级管理后端和客户 成员前端的应用程序 该项目最初启动时没有框架 只有简单的本机 JDBC 调用来进行数据库访问 随着项目的显着增长 一如既往 我进行了更重要的数据库调用 有时会查询较大的选择大小 我
  • Eclipse JUNO 无法启动

    当我启动 Eclipse 时 它 没有启动 出现错误并告诉我查看日志文件 查看日志文件 Users max work projects metadata log 操作系统 MacOS 10 7 4日食 4 2 朱诺 ADT 20 我的旧版本
  • Spring MVC @ModelAttribute 方法返回“错误请求”400

    再会 我遇到一个问题 我尝试发送带有某些属性的 POST 请求 但收到 错误请求 响应 这是我的控制器 Controller RequestMapping group public class GroupController private