在 throw exception() 或 addGlobalError() 之前保存一个变量

Save a variable before throw exception() or addGlobalError()

美好的一天,

在 java 网络应用程序中,我有一个供用户单击的按钮,我将在该方法中执行一些逻辑。我打算进行检查,如果用户在此按钮上单击超过 5 次并且(点击某些逻辑并抛出异常),则为 doSomething()。因此,我创建了一个变量来存储点击次数。我的代码如下:

@Session
private int count; 

    public Resolution add() throws BaseException {

      if ( count >= 5 ) {
        doSomething();
      }

      if ( true ) {
        count++;
        throw BaseValidationException();
      }

      return view( );
    }

但是,count++不会在throw BaseValidationException()之后+1。 但是如果我去掉throw BaseValidationException(),那么在我点击add按钮5次后,系统会运行doSomething()

我相信 throw Exception() 或 addGlobalError() 不会将变量值存储到会话中。除了将值存储到 db 之外,还有什么解决这个问题的方法吗?

这会起作用。

private int count; 

    public Resolution add() throws BaseException {
       HttpSession session=request.getSession();
       int count=(Integer)session.getAttribute("count");
      if ( count >= 5 ) {
        doSomething();
      }

      if ( true ) {
        count++;

        session.setAttribute("count",count);
        throw BaseValidationException();
      }

      return view( );
    }