[Wicket-ja-user 685] Re: xml宣言が出力されない

Back to archive index

Hidenori Sugiyama madog****@gmail*****
2012年 11月 20日 (火) 19:00:17 JST


こんにちは、杉山と申します。

ちょうど同じ疑問を持ったので、XML宣言が出力される条件を調べてみました。

結論としては、下記のようにページクラスでMIMEをapplication/xhtml+xmlに
変更すればXML宣言が出力されると思います。

    protected MarkupType getMarkupType() {
        return new MarkupType("html", "application/xhtml+xml");
    }

以前はMarkupSettingsのsetStripXmlDeclarationFromOutputで出力の有無を
変更できた記憶があったのですが、現在は変更されていました。
( https://issues.apache.org/jira/browse/WICKET-3639 が該当のissue )

WebApplicationクラスのrenderXmlDeclに該当コードが存在していますが、
現在はテンプレートでのXML宣言の有無は無関係になっており、下記の
いずれかの条件の場合にXML宣言が出力されるようです。

 ・ページのMIMEが application/xhtml+xml  かつ
  リクエストヘッダのAcceptに application/xhtml+xml が含まれる場合

 ・renderXmlDeclの二つ目の引数(insert)がtrueの場合

最初に示した方法は前者の条件に合わせるためのものです。

そのため、application/xhtml+xml以外のMIMEでもXML宣言を出力したい、
Acceptにapplication/xhtml+xmlを送ってこないブラウザに対してもXML宣言を
出力したい、などの場合には、後者の条件を利用する必要があります。

具体的には、WebApplicationのサブクラスでrenderXmlDeclを直接オーバーライド
する、もしくはWebPageクラスの同名メソッドを下記のようにオーバーライドする、
という手があるようです。

    protected void renderXmlDecl() {
        WebApplication.get.renderXmlDecl(this, true);  // insertをtrueに変更
    }


--
Hidenori Sugiyama


2012/11/9 曽我 裕士 <soga****@y-net*****>:
> 曽我と申します。
>
> wicket1.5.7で開発しております。
>
> 開発している中でいろいろと疑問が出てきてしまい、
> 立て続けに質問させていただきます。
>
> wicketで開発したアプリケーションをブラウザで表示させた際に
> ブラウザでソースを表示させると、先頭のxml宣言が出力されていないことに
> 気づきました。
>
> テンプレートのhtmlでは先頭に
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> を指定しています。
> IE9でもChromeでも試してみましたが、どちらも出力されていませんでした。
>
> 何か御心当たりはありませんでしょうか。
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user




Wicket-ja-user メーリングリストの案内
Back to archive index