あーなるほど

よくわかってなかった。

protected void print(final String aData) {
    if (bodyContent != null) {
        bodyContent.getPreviousOut().print(aData);
    } else {
        pageContext.getOut().print(aData);
    }
}

としてて、出力時にとにかくコイツでやっていた。
呼び出す局面でダメな場合がある。
とくにdoEnd()あたりだとたしかに、bodyContent!=nullだがbodyContentのストリームは閉じている場合もあるわ。