2016-08-01 3 views
1

Доброго дня,Сохранить переменный перед броском исключением() или addGlobalError()

В Java веб-приложении, у меня есть кнопка для пользователя щелкнуть, и я сделаю некоторую логику в методе. И я планирую сделать проверку, которая равна 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() не сохранит значение переменной в сеансе. Любые идеи для преодоления этого, кроме сохранения значения db?

+0

Почему вы не добавляете значение счетчика в сеанс или файлы cookie, session.setCounter («counter», counter); –

+0

В сервлет (в Java-приложении Java) не рекомендуется создавать переменную экземпляра в Servlet, специально для хранения пользовательских данных. –

+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(); 
    } 
+0

Можете ли вы удалить «private int count»? или это требуется? – immibis

+0

Нет, это не требуется. –

Смежные вопросы