抛出异常()或addGlobalError()之前保存变量

时间:2016-08-01 05:19:21

标签: java exception error-handling throw validationerror

美好的一天,

在java Web应用程序中,我有一个用户可以单击的按钮,我将在该方法中执行一些逻辑操作。我正在计划进行检查,如果用户在此按钮上单击超过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(),则在doSomething()按钮上单击5次后系统将运行到add

我相信抛出异常()或addGlobalError()不会将变量值存储到会话中。除了将值存储到db之外,还有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分: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( );
    }