【问题标题】:Spring3 ModelAttribute from jsp request params来自jsp请求参数的Spring3 ModelAttribute
【发布时间】:2011-11-09 15:00:05
【问题描述】:

是否可以抓取各种表单组件,并将它们转化为对应的 DAO 对象?我试图避免为每个表单创建一个自定义 Bean(封装所有字段)。

例如:

<form action="/add">
  <input name="foo" id="foo" value="29"/>
  <input name="bar" id="bar" value="63"/>
</form>


public void add(@ModelAttribute("foo") Foo myFoo, @ModelAttribute("bar") Bar myBar)

目前,我必须使用 HttpRequest,提取值 (29,63),并将它们用作主键来查找正确的数据库对象。我不知道是否有一种使用 ModelAttribute 自动连接它的快速方法。

谢谢!

【问题讨论】:

    标签: spring modelattribute


    【解决方案1】:

    你应该使用@RequestParam

    public void add(@RequestParam("foo") Foo myFoo, @RequestParam("bar") Bar myBar) {
    }
    

    【讨论】:

    • org.springframework.beans.ConversionNotSupportedException:无法将“java.lang.String”类型的值转换为所需的“Foo”类型;嵌套异常是 java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为所需类型 [Foo]:找不到匹配的编辑器或转换策略
    • 这适用于原始类型。对于自定义类,您需要使用带有 @InitBinder 注释的自定义绑定器,请参见示例 static.springsource.org/spring/docs/3.0.0.M3/…
    • 谢谢,但如果 Foo 和 Bar 都作为字符串传递,这似乎无法解决。似乎最好的方法是将 int 作为 requestparam 并使用 dao 服务来提取 dao 对象
    • 在 HTTP 请求中,参数总是作为字符串发送。如果您使用自定义对象,那么您需要使用一个活页夹,告诉 spring 如何将字符串转换为您的对象
    猜你喜欢
    • 2013-01-28
    • 2016-10-17
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多