2026/02/22
Mayaa 1.3.0 をリリースしました。
pkg:maven/com.github.seasarorg.mayaa/mayaa@1.3.0
https://central.sonatype.com/artifact/com.github.seasarorg.mayaa/mayaa/1.3.0
アップグレードガイド
重要: 1.2 以前のバージョンからアップグレードする場合は、いくつかの挙動変更があります。
詳細なアップグレード手順、システム要件、移行手順については、アップグレードガイド (UPGRADING.md) をご覧ください。
主なアップグレード時の注意点:
- Java 8 以上が必須要件になりました
- xercesImpl 2.12.2 への依存が追加されています (Maven/Gradleで自動的に解決されます)
- HTMLパーサの挙動が変更されています(XML宣言の改行、Empty attribute の出力形式など)
- ServiceProvider の読み込み順序を変更できるオプションが追加されました(デフォルトは従来通り)
トラブルシューティングについてもアップグレードガイドに詳しく記載しています。
Changes
挙動が変わる部分がありますのでご確認ください。
HTMLパーサ関連
- HTMLテンプレート内のXML宣言の直後に余分な改行が含まれないようになりました。 XercesやNekoHTMLの制約に起因して 1.1.34まではのXML宣言の直後に改行を挿入していましたが、テンプレートに合わせるようにしました。
- 空文字指定(Empty attribute)の属性をHTML仕様に合わせて出力するように変更しました。(
disabled=""からdisabledに変更) - 既存のNekoHTMLパーサでも
sourceやembedなどの対応してなかった Void Element(閉じタグを伴わないタグ)に対応しました。 #74
対応していないのは下記の通りです。- Unquoted attribute value のパース
@attrや:attrのパース(HTMLとしては非標準。新パーサでは対応)- HTML Living Standardで規定されている省略可能なタグの補完 (html, head, body など)
- xml宣言やmetaタグでcharset変更を検知した時に文字コードを指定して再読み込みするように変更しました。#75
<meta charset="UTF-8">形式の記述もhttp-equiv="content-type"のMayaa処理と同様の変換、HTMLレスポンスヘッダ送出に対応しました。- [Experimental] NekoHTMLを使用しないHTML Living Standardの定義に近いHTMLパーサを実装しました(デフォルトはNekoHTML版)。#77 #102 #89 #77 #73
org.seasar.mayaa.provider.ServiceProvider の templateBuilder の useNewParser 属性で有効にします。
- 新パーサで空白を伴わないHTML属性値(Unquoted attribute value)をパースできるようにしました。 '=' 以後の最初の空白文字までを値とみなします。出力は常に二重引用符で囲みます。
@attrや:attrといった本来属性名として許可されない名称を利用可能にしました。Vueなどのフロントエンドのフレームワークにて利用される記法です。
システム環境・運用関連
- Mayaa動作要件の最低JavaバージョンをJava8としました。#79 #80
- JMX経由でSpecificationを無効化する操作を追加しました。 #71 #70
- プロセッサダンプでTemplateのプロセッサ、オリジナルノード、Pageの内容を追加表示しました。 #99
設定関連
- WEB-INF配下を明示指定でスキャンできるWebInfSourceScannerを新設しました。ビルトインの設定はWebInfSourceScannerを使うようにしました。 #106
- ビルトインのライブラリマネージャの読み込みで
WebXMLTaglibSourceScannerを使用しないようにしました。
web.xmlのServletバージョンをあげたときに追従しきれないためです。明確にweb.xmlのタグライブラリ定義を使用したい場合はWEB-INF/org.seasar.mayaa.provider.ServiceProviderにてWebXMLTaglibSourceScannerを含めてください。 #106 - ResourceScannerで全てのJarをスキャンしないように除外指定できるようにしました。 #87
- 各ファクトリクラス、ServiceProviderの読み込みで書式にエラーがあっても起動できてしまっていたため、明確にエラーとするようにした。
- 各ファクトリクラス、ServiceProviderの生成時の順序を現在のビルトイン、ロード中のMETA-INF内、WEB-INF内から、逆順に変更できるようにしました。有効にするには web.xml にて MayaaServletに対する初期化パラメータ(
init-param)でenableBackwardOrderLoadingをtrueに設定してください。 #88 #115
これまでは順に生成されてもより後から生成されたもので破棄および上書きされていたため無駄となっていました。 ただし、class属性で指定されたクラスにインタフェースクラスを1つ引数にとるコンストラクタが定義されている場合は互換性のため元の順序で生成を行います。 - ServiceProvider定義のXMLの
class属性を任意指定とし、省略された場合はビルトインの設定ファイルと同じ実装をデフォルトとして用いるようにしました。実装を変更したい場合のみ旧来通りclass属性で指定します。
Fixes
- balanceTag を無効にするとDOCTYPEがheadタグ内に余分に付加される問題を修正しました。 #75 #76
- MetaInfSourceScanner の ignore パラメータが効いていないのを修正しました。 #103 #104
- [mayaa-user:1087] 独自プロセッサーを使うとエラーが発生する場合があったのを修正しました。 #13 #91 #97
- TemplateProcessor.notifyBeginRenderが実質的に呼ばれていないことに対処しました。 #96 #97
Dependencies
- Bump xercesImpl from 2.12.0 to 2.12.2 #72
Alpha版からの変更
1.3.0-alpha1, 1.3.0-alpha2 からの主な変更点:
- 各ファクトリクラス、ServiceProviderの読み込み順序の逆順変更がデフォルトで無効になりました(alpha1では有効でした)
- 有効にする場合は
enableBackwardOrderLoadingを明示的にtrueに設定してください #115
- 有効にする場合は