忍者ブログ

Java, Strutsの記事一覧: Javaってまだいけますか

Javaってまだいけますか

いっぱいいっぱいで無理なので学んだ事をいちいちメモっていくブログです。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

[Struts]struts-config.xmlのアクション定義パスから実際のパスに変換

struts-config.xmlでアクションのパスを”/xxxx"みたいに定義してて、どっかの処理でそのパスから本当のパス("/コンテキストルート/xxxx.do")を取得したい場合。
import org.apache.struts.taglib.TagUtils;

TagUtils.getInstance().getActionMappingURL("/xxxx", pageContext);

で実際のパスが取得できました。

プロジェクトの共通基盤を作る時に重宝しました。
PR

[Struts]改行コードをBRタグに変換するカスタムタグ

照会画面なんかで情報を表示する時に便利かと思って作りました。
bean:writeタグクラスを継承して必要なとこだけいじります。

import javax.servlet.jsp.JspException;

import org.apache.commons.validator.GenericValidator;
import org.apache.struts.taglib.TagUtils;
import org.apache.struts.taglib.bean.WriteTag;

/**
* 複数行テキストの改行をBRタグに変換して出力します。
*/
public class NlToBr extends WriteTag {

/*
* (non-Javadoc)
* @see org.apache.struts.taglib.bean.WriteTag#formatValue(java.lang.Object)
*/
protected String formatValue(Object valueToFormat) throws JspException {
if (!(valueToFormat instanceof String)) {
throw new IllegalArgumentException("文字列以外の項目には利用できません。");
}

String s = (String) valueToFormat;

if(GenericValidator.isBlankOrNull(s)) {
return s;
}

// 自前でエスケープする為
super.setFilter(false);

// 先にエスケープしてから改行変換
return TagUtils.getInstance().filter(s).replaceAll("\\r\\n|\\n", "<br />");
}

}

TLDファイルもbean:writeからこぴぺしてこんな感じで作成。

<tag>
<name>NlToBr</name>
<tagclass>jp.co.xxxxx.NlToBr</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>ignore</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>

使い方。
<ex:NlToBr name="xxxForm" property="body" />


カスタムタグって一部では評判悪かったりしますが、アーキテクト的な立場で開発者にある程度実装を強制したい場合に便利だと思いました。
1つのシステムの入力形式や表示形式って実はある程度分類して形式化できるので、それぞれ専用のカスタムタグを始めに作ってしまうと、HTMLの出力(スタイルシートの指定とかsize指定とかバリデーション用Javascriptとか)が統一できて良い感じでした。

Navigation

Copyright ©  Javaってまだいけますか  All Rights Reserved.
  • 忍者ブログ
  • [PR]

menu

ブログ内検索

カテゴリー

カウンター

忍者アド

リンク

最新CM

[07/17 セバ]
[12/27 NONAME]

最新記事

(10/15)
(10/01)
(08/12)
(08/12)
(08/11)

プロフィール

HN:
takacy.k
年齢:
44
性別:
男性
誕生日:
1979/08/13
趣味:
自己紹介:
個人的なメモですので、投稿内容について真偽を保証するものではありません。また、当ブログの内容をご利用になったことによる(以下略)

最新TB

RSS

アーカイブ

アクセス解析