2012-03-30 58 views
0

我的表单中有一个下拉列表,当验证失败时有一个问题需要填充。我使用Preparable接口使用xml验证。要访问下拉数据,我需要从表单中传递一些ID。问题是当验证失败并调用prepare()/ prepareInput()时,没有设置包括ID在内的类中的变量。 ID是不变的形式的隐藏参数。请指教。 谢谢 尤里struts2验证:当验证失败时重新填充下拉列表

回答

2

准备()在Struts2是使用init()的许多其他框架中的作用相当的代名词,这是它被称为初始化动作和充满非常相似的构造作用。

似乎缺少一些东西......使用默认堆栈应该在调用验证之前设置操作的所有参数。所以如果客户确实传递了参数,我不明白为什么或者如何丢失任何东西,除非你的逻辑的某些部分清除了它们。

有时需要将其他对象作为您的操作中的字段获取,这些字段是由表单设置的值派生的,或者作为参数传入。在这种情况下,您希望准备在设置值之后调用,然后验证,如果此方案适用于您,则params-prepare-params堆栈是适当的。

个人而言,我会将准备逻辑放入动作执行方法而不是准备方法。只有当我把多个动作放到一个单独的类中时,准备方法才是最合适的,因为它会将重复的内容分解出来。然后params-prepare-params是一个特殊情况,虽然我会争论,如果你使用DI,它可能永远不需要使用。

如果这没有帮助,请使用动作类/ xml映射(如果有)扩展您的问题并提供验证xml以及我们可以看到为什么会发生这种情况。