当前位置: 首页 > 知识库问答 >
问题:

具有相同属性名称的多个模型属性的Spring表单路径

曾瀚昂
2023-03-14

问题是我的控制器中有一个spring表单和两个具有相同属性的@ModelAttribute参数。表单的“commandName”参数设置为我的modelAttributes名称之一。令我惊讶的是,不仅将属性映射到用“commandName”指定的模型属性,还映射到第二个属性。

我还没有找到确切的解决方案,除了和我的相似之处:Spring-form多个表单具有相同的模型属性名称属性

但在我的例子中,我看不到任何“奇怪的事情”,我有一个表单,一个绑定该表单的模型属性,以及一个访问控制器作用域@SessionAttribute的模型属性。我也尝试过使用form的' modelAttribute '参数(实际上我看不出两者有什么区别),但是没用。

我的代码示例:

查看.jsp:

<form:form name="form" action="/myAction" method="POST" commandName="model1">
    <form:input path="property"/>
    ....
    <input type="submit" value="Submit"/>
</form:form>

Controller.java

@SessionAttributes("model2")
class Controller {
    @RequestMapping(value = "/myAction", method = POST)
    public String submitEditSite(final @ModelAttribute(value = "model1") Model1 model1,
                                 final @ModelAttribute(value = "model2") Model2 model2) {
        ....
        return "redirect:/home";
    }
}

型号1.java型号2.java

class Model1 {
    private String property;
}
class Model2 {
    private String property;
}

我哪里错了?

共有1个答案

施靖
2023-03-14

如果我理解正确的话,你想阻止在model2上设置任何属性,对吗?那么这应该是:

  @InitBinder("model2")
  public void initBinder(WebDataBinder binder) {
    binder.setDisallowedFields("*");
  }
 类似资料:
  • 问题内容: 如果您有一个包含带有重复属性的文本输入的表单,并且该表单已经过帐,那么您仍然能够从PHP数组中获取所有字段的值吗? 问题答案: 否。仅最后一个输入元素可用。 如果要使用相同名称的多个输入,请使用输入名称属性。然后将包含foo的数组,其中包含来自输​​入元素的所有值。 如果不使用则仅包含最后一个值的原因是因为PHP基本上只会爆炸并遍历要填充的原始查询字符串。当遇到已经存在的名称/值对时,

  • 问题内容: 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,出现异常: java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.I

  • 问题内容: 我正在用C#编写.NET Framework 3.5。 我正在尝试将某些Json解析为JObject。 Json如下: 当我尝试将此Json解析为JObject时,JObject仅了解LargeBox。SmallBox和MedBox的信息丢失。显然,这是因为它将“ TBox”解释为一个属性,并且该属性已被覆盖。 我从Delphi编码的服务中收到此Json。我正在尝试为该服务创建C#代理

  • 当我打开localhost:8080/customers/searchCustomer时,会引发异常: org.springframework.beans.NotReadable属性异常:bean类[java.lang.字符串]的无效属性ssn:Bean属性ssn不可读或具有无效的getter方法:getter的返回类型是否与setter的参数类型匹配? 我的接球手和二传手都很好。 我的实体: 在

  • 假设您有2个包,并且有名为-Test的公共类。 第一个包。测试 第二包测试 它们中的每一个都有实例变量-x。 在第一种情况下-int x=2; 在第二种情况下-int x=3; 我想导入FirstPackage。在第二个包内测试。测试并打印值为2的x。 我的代码: 但是输出是3。如何打印?

  • 我创建了一个jsp表单,它想将数据发送到两个表。这意味着我创建了两个模型类,所以表单应该引用这两个模型类。我试过了,但是失败了。如何从一个jsp页面获得两个模型属性并分配给一个控制器。提前感谢。 jsp表单 控制器