-->

http://d.hatena.ne.jp/coolstyle/20070319#1174308234
どこかでチラっと見たような気がして探したらorg.apache.tapestry.dom.DefaultMarkupModelにありました。tranditionalなHTMLにするために故意にそうしてるみたいです。MarkupModelの他の実装でsrc/test/java配下にXMLMarkupModelというのがあって、これを使うと<br/>とかにも対応できそうなので試してみたらできました。方法は、id:butyricacidさんがやってたdecorateしようとして他のオブジェクトを返す、というやり方です。

public static MarkupWriterFactory decorateMarkupWriterFactory(
    @InjectService("ComponentInvocationMap") final ComponentInvocationMap componentInvocationMap,
    Object delegate) {
  return new MarkupWriterFactory() {
    public MarkupWriter newMarkupWriter() {
      return new MarkupWriterImpl(new DefaultMarkupModel() {
        @Override
        public EndTagStyle getEndTagStyle(String element) {
          return EndTagStyle.ABBREVIATE;
        }
      }, componentInvocationMap);
    }
  };
}

できるにはできるけど、<br>こんなのも</br>ありになるXMLだし。ComponentInvocationMapとMarkupWriterImplがinternalなのでちょっと気持ち悪い。けど今は他にやり方が思いつかないので仕方ない。