goo blog サービス終了のお知らせ 

Psalm

プログラマ向け技術メモ

タグライブラリ拡張

2008-09-03 18:47:51 | Struts
Strutsのhtmlライブラリの<html:textarea>にはwrap属性が
用意されていない。
ということで、ライブラリを拡張してwrap属性を装備することにした。
手順は意外と簡単。
まず、org.apache.struts.taglib.html.TextareaTagをextendsした
オリジナルのtextareaクラスを作成して、wrap変数を持たせて
変数を有効にする。

public class ExTextareaTag extends org.apache.struts.taglib.html.TextareaTag {

/** wrap属性 */
private String wrap;

/**
* wrap属性を取得
* @return the wrap
*/
public String getWrap() {
return wrap;
}

/**
* wrap属性を設定
* @param wrap the wrap to set
*/
public void setWrap(String wrap) {
this.wrap = wrap;
}

/**
* wrap属性を有効とする
*/
@Override
protected void prepareOtherAttributes(StringBuffer handlers) {
prepareAttribute(handlers, "wrap", getWrap());
}
}

さて、次はstruts-html.tldの拡張。
textareaのタグを探してコピペ。nameとtagclassを変更、
attributeにwrapを追加。
ちなみに、requiredにtrueを設定すると属性が必須になる。
wrap属性は必須ではないのでfalseを設定。
rtexprvalueは、属性値をJSPのスクリプトで指定できるか。
一応、trueにしておく。

<tag>
<name>extextarea</name>
<tagclass>util.ExTextareaTag</tagclass>
<attribute>
<name>wrap</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
以降はtextareaと同じ

最後に実際のJSPの指定方法。
htmlタグの名前にextextareaを指定するだけ。

<html:extextarea property="xxxxx" rows="5" cols="54" wrap="phycical" />

完成!