2009年5月26日火曜日

Slim3でリソース表示(訂正)


すでにこの設定などは古くなっている可能性があります。

Slim3の開発はこんなブログより正式ドキュメントが有効です。
Slim3サイト
非公式と言われていますが充実した日本語サイトもあります。
Slim3日本語サイト



※以下コメントを受けまして、少し訂正を入れています。
 訂正と言うか注釈ですね。。。

Slim3を触っています。
構築中っていうことでまだ単純な機能が足りません。
※訂正:単純な機能ではなく、私のスキルが足りなかったようです。

ん。。。JSPにリソースを表示したい。。。
ってことでオリジナルで作ってみました。
おそらく近日本家で実装されますんで
※訂正:コメントより、作られるのではなくJSTLで既にあるようです。


taglib作成の参考として読んでください。

まずtldファイルを作成します。


<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">

<description>Mog resource library</description>
<display-name>Mog resource</display-name>
<tlib-version>1.1</tlib-version>
<short-name>res</short-name>
<uri>http://mog.ziro.bz/resource</uri>

<function>
<description>
resource bundle get
</description>
<name>get</name>
<function-class>bz.ziro.mog.jsp.Resource</function-class>
<function-signature>java.lang.String get(java.lang.String)</function-signature>
<example>
${f:get(param)}
</example>
</function>

</taglib>


で作成したところにあるfunction-classを生成します。


package bz.ziro.mog.jsp;

import java.util.ResourceBundle;

public final class Resource {

private static ResourceBundle resources = ResourceBundle.getBundle("application");

public static String get(String aKey) {
return resources.getString(aKey);
}
}


ResourceBundleの生成に使っている"application"はクラスパス+名称になります。
のでこの設定だとクラスパス直下にapplication.propertiesやapplication_ja.propertiesを
作成しておきます。※ResourceBundleは国際化されています。



<%@taglib prefix="res" uri="http://mog.ziro.bz/resource"%>

${res:get("mog.l.title")}


で表示することができます。
uriに指定するのはtldのuriに記述したURIです。
こういうtaglib作成があるんですね。Slim3のFunctionを参考にさせてもらいました。

TDDってもんを完全に守ったこともない僕にはまだまだ。。。
それでもコミッタを夢見るの巻きでした。

2 件のコメント:

Yasuo さんのコメント...

リソースの表示は、
JSTLのfmtを使ってできますよ。

<fmt:setBundle basename="application"/>
<fmt:message key = "..."/>

Slim3は、極力標準にあわせ、
独自のものはできるだけ作らない方針です。

secondarykey さんのコメント...

そうなんですね。
てっきりFunctionにいつか足されるものかと思ってました。

最近は何でも標準でできちゃうんですね。。。
※って昔から?

間違いが起きないように訂正しておきます。
※今試せないので、試してから