Apache Commons Chain基本示例

Xla*_*ech 2 java apache-commons maven

我需要进入一个项目的Apaches Common Chain。因此,我尝试在下面运行一个基本示例:http : //www.onjava.com/pub/a/onjava/2005/03/02/commonchains.html

Commons Chain是通过Maven安装的。

我写了以下Chain Base:

public class PFChain extends ChainBase {
    public PFChain() {
        super();
        addCommand(new CalcE());
        addCommand(new CalcDOEB());
        addCommand(new CalcG());
    }

    public static void executePFChain() {
        Command process = new PFChain();
        Context context = new ContextBase();
        try {
            process.execute(context);
        } catch (Exception e) {
            System.out.println("errortext");
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的三个命令类如下所示:

public class CalcDOEB implements Command {
    @Override
    public boolean execute(Context context) throws Exception {
        System.out.println("Calculating DOEB...");
        return true;
    }
}

public class CalcE implements Command {
    @Override
    public boolean execute(Context context) throws Exception {
        System.out.println("Calculating E");
        return true;
    }
}

public class CalcG implements Command {
    @Override
    public boolean execute(Context context) throws Exception {
        System.out.println("Calculation G...");
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在奇怪的是,他只执行链中的第一条命令。它们都可以工作,但是只要它们位于命令列表的开头即可。

当我打开调试器时,我看到它们全部都在列表中。

此错误来自何处,我该如何解决?

问候,

尼古拉斯

Rob*_*enu 5

尝试将所有return语句更改为 false而不是true。当返回true时,您将终止链。因为您不希望链结束,所以需要返回false。

要了解更多有关此内容的信息,请查看Javadoc:https : //commons.apache.org/proper/commons-chain/apidocs/org/apache/commons/chain/Command/html.Command#html#CONTINUE_PROCESSING