在 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( );
}
美好的一天,
在 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( );
}