我在jsp中有两个按钮,即Start和Stop。
预期:只有点击一下开始按钮,才会开始计数,按下停止按钮时应停止计数。
(参考代码,当按下停止按钮时,应调用 stop_action(),布尔 stopOperation 设置为true, **迭代应该在start_action()**中停止。)
实际:只要单击“开始”按钮,就会开始新的计数。即使多次按下“停止按钮”,也无法停止计数。
代码如下:
在faces-config.xml中, FunctionExit(class,abcwar.FunctionExit)有请求范围。
和类FunctionExit是:
package abcwar;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import javax.faces.FacesException;
public class FunctionExit extends AbstractPageBean {
private boolean stopOperation = false;
private void _init() throws Exception {
}
public FunctionExit() {
}
@Override
public void init() {
try {
_init();
} catch (Exception e) {
log("FunctionExit Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
}
@Override
public void preprocess() {
}
@Override
public void prerender() {
}
@Override
public void destroy() {
}
public String stop_action() {
setStopOperation(true);
System.out.println("getStopOperation() :" + getStopOperation());
return "true";
}
public String start_action() {
long steps = 0;
while (!getStopOperation()) {
steps++;
System.out.println("Step Count :" + steps + ", getStopOperation() :" + getStopOperation());
}
return null;
}
public boolean getStopOperation() {
return stopOperation;
}
public void setStopOperation(boolean stopOperation) {
this.stopOperation = stopOperation;
}
}
答案 0 :(得分:0)
在
(i)在Session Scoped Class,SessionBean1中定义函数start_action(),stop_action()和类变量boolean stopOperation
(ii)制作停止按钮的禁用属性=!启动按钮的禁用属性
预期的行为已经实现。
代码如下:
package abcwar;
import com.sun.rave.web.ui.appbase.AbstractSessionBean;
import javax.faces.FacesException;
public class SessionBean1 extends AbstractSessionBean {
private boolean stopOperation = false;
private long steps = 0;
private void _init() throws Exception {
}
public SessionBean1() {
}
@Override
public void init() {
try {
_init();
} catch (Exception e) {
log("SessionBean1 Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
}
}
@Override
public void passivate() {
}
@Override
public void activate() {
}
@Override
public void destroy() {
}
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1) getBean("ApplicationBean1");
}
public boolean isStopOperation() {
return stopOperation;
}
public void setStopOperation(boolean stopOperation) {
this.stopOperation = stopOperation;
}
public String stop_action() {
setStopOperation(true);
System.out.println("getStopOperation() :" + isStopOperation());
return null;
}
public String start_action() {
if (steps <= 0) {
steps = 0;
}
setStopOperation(false);
while (!isStopOperation()) {
steps++;
System.out.println("Step Count :" + steps + ", getStopOperation() :" + isStopOperation());
}
return null;
}
}