テンプレート切り替え

Mayaa では、ひとつの URL で複数のテンプレートを使いわけることができます。たとえば、利用者の言語にあわせたテンプレートを使う、というように利用できます。

複数のファイルを用意する

まず、同じ URL でアクセスするテンプレートを、必要な数だけ用意します。同じ URL として扱うために、テンプレートのファイル名を "$" で区切って種類を表現します。

たとえば /use_suffix.html という URL で、英語のページを "en"、日本語のページを "ja" とするとき、次のファイルを用意します。

  • use_suffix$en.html
  • use_suffix$ja.html

種類を指定する

次に、どのファイルを使うかを指定します。m:mayaam:templateSuffix 属性を書き、その値として種類 (en や ja) を文字列として指定します。スクリプトを書く場合、その結果が文字列になるようにしてください。

下の例ではパラメータとして "locale" を渡し、その値を使って切り替えます。

<html>
<body>
    in English.

</body>
</html>
<html>
<body>
    in Japanese.

</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<m:mayaa xmlns:m="http://mayaa.seasar.org"
        m:templateSuffix="${ param.locale }">
</m:mayaa>

ブラウザで http://localhost:8080/mayaa/use_suffix.html?locale=en にアクセスしてみましょう。「in English.」と表示されますね。次に http://localhost:8080/mayaa/use_suffix.html?locale=ja にアクセスしてみましょう。今度は「in Japanese.」と表示されますね。

実行結果 (改行などは実際の実行結果と異なります)
use_suffix.html?locale=en の場合
<html>
<body>
    in English.

</body>
</html>
use_suffix.html?locale=ja の場合
<html>
<body>
    in Japanese.

</body>
</html>

指定した種類が存在しない場合

m:templateSuffix 属性で指定したテンプレートファイルが存在しない場合、デフォルトのテンプレートが使われます。デフォルトのテンプレートは、$ とその後ろがない、単純なファイル名のものです。

デフォルトのテンプレート "use_suffix.html" を用意して、locale に存在しない文字列を指定してみましょう。

<html>
<body>
    Default.

</body>
</html>

ブラウザで http://localhost:8080/mayaa/use_suffix.html?locale=aaa にアクセスしてみましょう。「Default.」と表示されますね。

実行結果 (改行などは実際の実行結果と異なります)
use_suffix.html?locale=aaa の場合
<html>
<body>
    Default.

</body>
</html>