为什么struts 2在动作类中调用set()方法两次?

时间:2017-05-23 14:38:50

标签: struts2 action setter getter

我在struts.xml

中使用了类似的内容
action name="{product}/{product-name}/info"
class="myclass"
.. and so on...

我为参数productproduct-name添加了getter和setter方法。在记录时我发现两个参数的set方法被调用两次(对于每个参数)。为什么会这样?

1 个答案:

答案 0 :(得分:0)

可能在您的拦截器堆栈中,您已经两次声明params拦截器。

这可能是完全正确的。

paramsPrepareParamsStackstruts-default.xml中可用的堆栈之一,在您实施Model-Driven-CRUD时非常有用: 第一个params拦截器设置模型的ID,然后prepare从数据库(或其他)中检索模型,然后第二个 params拦截器集模型的所有传入属性(假设您正在阅读POST

来自文档:

  

当您希望将参数直接应用于您希望外部加载的对象(例如DAO或数据库或服务层)时,这非常有用,但是至少在ID参数已经加载之前无法加载该对象加载。通过加载参数两次,您可以在prepare()方法中检索对象,允许第二个params拦截器在对象上应用值。