将此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并以简单的方式验证字段? 或者......?
答案 0 :(得分:0)
我可以简单地添加一个@RequestParam参数来获取它吗?
我认为您在询问是否可以在一个控制器方法中同时使用@RequestParam
和POJO绑定。是的,这是可能的。也许你应该尝试一下而不是询问它?
我是否必须编写“表单专用”POJO,因此我总是可以使用@ModelAttribute并以简单的方式验证字段?还是......?
这取决于......您需要提供一个示例,说明您正在为有用的答案做些什么。即你想用一个表单绑定到多个POJO,字段名称是不匹配的,你在POJO中有额外的字段你不想显示,POJO是否有很多嵌套的类等等......
将一个简单的扁平bean / POJO用作“表单支持bean”是很常见的。它们通常也称为DTO(数据传输对象)。请参阅What is Data Transfer Object?。