如果问题是动作属性的数量,请手动公开POJO或使用ModelDriven。
手动执行很简单,例如:
public class UserController {
private User user; // Plus public getter and setter
}
<s:form ...>
<s:textfield key="user.firstName"/>
...
ModelDriven
从理论上讲,使用它甚至更容易,因为它会自动放置在堆栈中。确保仅在需要时才实例化新模型,但基本上(从内存中)实例化是很棘手的:
public class UserController implements ModelDriven<User> {
private User user;
public User getModel() { return user; }
}
User
由于将User
压入堆栈,因此直接在JSP中使用属性:
<s:form ...>
<s:textfield key="firstName"/>
...
同样,在提交表单时,会创建一个模型并将其用作方法的第一个目标。
请记住,您永远不会将对象发送到Java端:您总是并且仅发送字符串(通过常规HTTP表单提交)。服务器端可能会有魔术将这些字符串转换为对象,但这仅仅是魔术。魔术和希望。