0

jsp には Start と Stop という 2 つのボタンがあります。

期待される:開始ボタンがクリックされるのは 1 回のみであり、カウントが開始され、停止ボタンが押されたときにカウントが停止する必要があります。

(コードを参照すると、停止ボタンが押されたときに関数stop_action()を呼び出す必要があり、ブール値の stopOperationを true に設定し、**start_action() で反復を停止する必要があります**。)

実際: [開始] ボタンがクリックされるたびに、新しいカウントが開始されます。何度ストップボタンを押してもカウントが止まりませんでした。

コードは次のとおりです。

faces-config.xml では、 FunctionExit (クラス、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;
    }
}
4

1 に答える 1

0


(i) 関数 start_action()、stop_action() およびクラス変数 boolean stopOperation を Session Scoped Class、SessionBean1 で定義した


後、 (ii) Stop Button's Disabled Property = !Start Button's Disabled Property を作成 すると、期待される動作が実現されました。

コードは次のとおりです。

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;
    }
}
于 2013-09-10T06:13:19.807 に答える