Spring MVC:ModelAttribute表单=更多POJOS?

时间:2012-01-02 08:52:54

标签: forms spring spring-mvc

将此POJO作为域名。

public class Invoice {
    private String codeNumber;
    private BigDecimal amount;
    private String notes;

    private List<InvoiceRows> rows;      
}

我有一个将其作为@ModelAttribute的表单。 表单有四个文本输入:codeNumber,amount,notes和“emailAddressToNotify”。 POJO的“行”属性填充在另一个地方,所以它被忽略了,这是正确的。

另一方面,“emailAddressToNotify”属性由表单的“POST”发送,但显然它与Invoice POJO无关。实际上,我需要在我的控制器“processForm()”方法中使用它。

我可以简单地添加@RequestParam参数来获取它吗?

这是问题的第二部分,因为它与第一部分有关:

在我的Web应用程序中,我经常会写“巨大”的表单,其中的字段并不总是对应于我的某个域对象的字段。所以,我问你最佳做法是什么:

我是否必须编写“表单专用”POJO,因此我总是可以使用@ModelAttribute并以简单的方式验证字段? 或者......?

1 个答案:

答案 0 :(得分:0)

  

我可以简单地添加一个@RequestParam参数来获取它吗?

我认为您在询问是否可以在一个控制器方法中同时使用@RequestParam和POJO绑定。是的,这是可能的。也许你应该尝试一下而不是询问它?

  

我是否必须编写“表单专用”POJO,因此我总是可以使用@ModelAttribute并以简单的方式验证字段?还是......?

这取决于......您需要提供一个示例,说明您正在为有用的答案做些什么。即你想用一个表单绑定到多个POJO,字段名称是不匹配的,你在POJO中有额外的字段你不想显示,POJO是否有很多嵌套的类等等......

将一个简单的扁平bean / POJO用作“表单支持bean”是很常见的。它们通常也称为DTO(数据传输对象)。请参阅What is Data Transfer Object?