1

再会,

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

@Session
private int count; 

    public Resolution add() throws BaseException {

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

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

      return view( );
    }

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

我相信 throw Exception() 或者addGlobalError()不会将变量值存储到会话中。除了将值存储到数据库之外,还有什么想法可以克服这个问题吗?

4

1 回答 1

1

这将起作用。

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( );
    }
于 2016-08-01T05:30:22.367 回答