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