Помешать одной функции из другой функции в Java

У меня есть две кнопки в JSP, а именно Start и Stop.

Ожидаемый: только после нажатия кнопки "Пуск" должен начаться отсчет, и при нажатии кнопки "Стоп" отсчет должен быть остановлен.

(Со ссылкой на код, когда нажата кнопка " Стоп", должна быть вызвана функция stop_action(), булево значение stopOperation установлено в true и **, в то время как итерация должна прекратиться в start_action() **.)

Фактически: всякий раз, когда нажимается кнопка "Пуск", начинается новый отсчет. Подсчет не может быть остановлен, даже многократно нажав кнопку Стоп.

Код выглядит следующим образом:

В face -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;
    }
}

1 ответ

После
(i) определение функций start_action(), stop_action() и переменной класса boolean stopOperation в классе Session Scoped, SessionBean1
(ii) сделать свойство Disabled кнопки Stop =! свойство Disabled кнопки Start

ожидаемое поведение было достигнуто.

Код выглядит следующим образом:

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;
    }
}
Другие вопросы по тегам