我在struts.xml
:
action name="{product}/{product-name}/info"
class="myclass"
.. and so on...
我为参数product
和product-name
添加了getter和setter方法。在记录时我发现两个参数的set方法被调用两次(对于每个参数)。为什么会这样?
答案 0 :(得分:0)
可能在您的拦截器堆栈中,您已经两次声明params
拦截器。
这可能是完全正确的。
paramsPrepareParamsStack
是struts-default.xml
中可用的堆栈之一,在您实施Model-Driven-CRUD
时非常有用:
第一个params
拦截器设置模型的ID,然后prepare
从数据库(或其他)中检索模型,然后第二个 params
拦截器集模型的所有传入属性(假设您正在阅读POST
)
来自文档:
当您希望将参数直接应用于您希望外部加载的对象(例如DAO或数据库或服务层)时,这非常有用,但是至少在ID参数已经加载之前无法加载该对象加载。通过加载参数两次,您可以在prepare()方法中检索对象,允许第二个params拦截器在对象上应用值。