簡體   English   中英

用Java中的另一個函數干擾一個函數

[英]Interfere one function from another function in java

我在jsp中有兩個按鈕,分別是Start和Stop。

預期:僅應單擊一次“開始”按鈕,才應開始計數,並且在按下“停止”按鈕時應停止計數。

(參考該代碼,當按下“ 停止”按鈕時,應調用stop_action()函數,將boolean 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;
    }
}


(i)在Session Scoped類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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM