Validation 当您返回多页表单时,如何防止表单验证?支柱1

Validation 当您返回多页表单时,如何防止表单验证?支柱1,validation,struts-1,Validation,Struts 1,当您返回多页表单时,如何防止表单验证?我在XML中有一个验证,我希望在您单击“下一步”时检查它(它可以工作),在您单击“上一步”时检查它是否不工作(在我的示例中是“取消”按钮)。不幸的是,在我的案例中,验证在这两种情况下都会发生。。。。。有什么想法吗?我很感激:)有一种方法可以解决这个问题,它叫:防止双重提交 Struts 1.x通过在调用操作后保存令牌来实现这一点。您需要查看的3个方法来自Struts 1.x类: resetToken isTokenValid saveToken 因此,在

当您返回多页表单时,如何防止表单验证?我在XML中有一个验证,我希望在您单击“下一步”时检查它(它可以工作),在您单击“上一步”时检查它是否不工作(在我的示例中是“取消”按钮)。不幸的是,在我的案例中,验证在这两种情况下都会发生。。。。。有什么想法吗?我很感激:)

有一种方法可以解决这个问题,它叫:防止双重提交

Struts 1.x通过在调用操作后保存令牌来实现这一点。您需要查看的3个方法来自Struts 1.x类:

  • resetToken
  • isTokenValid
  • saveToken
因此,在您的操作方法上,您必须进行令牌验证检查,以查看此操作之前是否执行过。如果尚未执行,请继续执行您的操作

以下是验证应如何进行的示例:

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    ActionForward forward = null;

    boolean valid = isTokenValid(request);
    if (!valid) {
        //We HAVE NOT yet ran this action, let's execute our action.
        //TODO: Complete the rest of the code.

        //Map my forward
        forward = .....;

        //Finally, save this action for further execution.
        saveToken(request);
    } else {
        //Forward, as usual....?
        forward = .....;
    }

    return forward;
}

有一个例子解释了令牌会话的整个概念,以防止双重(表单)提交。

很抱歉,这与Struts 1.x有什么关系?@BuhakeSindi,因为触发的是S1验证?哦!我现在明白了。他创建了一个验证XML页面。他希望在单击后退按钮时不触发验证。这个问题一开始没有意义(我认为OP验证了一个XML文件)。