struts2验证:验证失败时重新填充下拉列表

struts2验证:验证失败时重新填充下拉列表,struts2,Struts2,我的表单中有一个下拉列表,当验证失败时,该下拉列表有一个填充问题。我使用xml验证和可准备接口。要访问下拉列表中的数据,我需要从表单中传递一些ID。问题是,当验证失败并调用prepare()/prepareInput()时,类中包括ID在内的所有变量都未设置。ID是形式不变的隐藏参数。请给我一些建议。 非常感谢。 struts2中的Yuriprepare()相当于许多其他框架中init()的角色的同义词,即调用它来初始化操作并填充一个与构造函数非常类似的角色 好像少了什么东西。。。使用默认堆栈时

我的表单中有一个下拉列表,当验证失败时,该下拉列表有一个填充问题。我使用xml验证和可准备接口。要访问下拉列表中的数据,我需要从表单中传递一些ID。问题是,当验证失败并调用prepare()/prepareInput()时,类中包括ID在内的所有变量都未设置。ID是形式不变的隐藏参数。请给我一些建议。 非常感谢。 struts2中的Yuri

prepare()相当于许多其他框架中init()的角色的同义词,即调用它来初始化操作并填充一个与构造函数非常类似的角色

好像少了什么东西。。。使用默认堆栈时,应在调用验证之前设置操作上的所有参数。因此,如果客户机确实在传递参数,我看不出为什么或如何丢失这些参数,除非您的逻辑中有一部分清除了它们

有时,有必要在操作中获取其他对象作为字段,这些字段来自表单设置的值,或者作为参数传入。在这种情况下,您希望在设置值后调用prepare,然后进行验证,如果此场景适用于您,则params prepare params堆栈是合适的

就个人而言,我会将准备逻辑放入actions execute方法,而不是prepare方法。只有当我把多个动作放到一个类中时,prepare方法才是最合适的,因为它考虑到了什么是重复。那么params prepare params是一种特殊情况,可能会突然出现,尽管我认为如果使用DI,可能永远不需要使用它

如果这没有帮助,请使用action类/xml映射(如果有)扩展您的问题,并提供验证xml,以便我们了解为什么会发生这种情况