在填充表单之前不调用struts reset()

时间:2010-02-16 12:25:27

标签: struts

我在这里遇到了一个奇怪的(也可能是)错误的行为。我试图在页面上放置一个复选框,你就知道了:未选中的复选框不会写入请求(只有复选框)

struts通常提供的是覆盖:

@Override
public void reset(ActionMapping mapping, ServletRequest request)

将所有复选框重置为“false”。 但就我而言,这个reset()永远不会被调用!

有人有个主意吗?

提前致谢,

魔法

5 个答案:

答案 0 :(得分:4)

要覆盖的正确方法签名是

  

public void reset(ActionMapping   映射,                     的 javax.servlet.http.HttpServletRequest   请求)

答案 1 :(得分:2)

Struts框架会自动调用reset方法(你对The Elite Gentleman的回答是正确的)......就是你在书中做了所有事情。

检查以下内容:

  1. 您是否正在扩展ActionForm 或其他什么?
  2. 你有没有机会改写 在子类中重置方法 一个你没有得到所谓的方法和你 用它来做你的行动?
  3. 您是否正在管理表单生命周期 手工,而不是让Struts 做到了吗?
  4. 在struts-config中,你指定了吗? 你的行动使用它 通过指定的特殊形式 name代码上的action属性?
  5. 我的钱是4号。

答案 2 :(得分:1)

我遇到了类似的问题。

解决方案是在struts-config.xml的action标签中添加 scope =“request”属性

答案 3 :(得分:0)

默认情况下永远不会调用重置,您必须通过您的操作调用它(如果您想重置表单),

或者,在您的jsp上,您将拥有<html:reset />标记,并覆盖ActionForm的重置方法。这有帮助。

答案 4 :(得分:0)

reset()方法的原型是:

public void reset(ActionMapping mapping, javax.servlet.http.HttpServletRequest request)

如果我们在尝试打开我们的应用程序时没有使用reset()方法,那么以前的值将自动生效。
如果我们使用此reset()方法,则先前的值将重置为空值。因此,通过使用此reset()方法,我们可以避免以前的值。