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