美好的一天,
在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之外,还有什么想法可以解决这个问题吗?
答案 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( );
}