Syboos jsf4jstl forEach tokenizer

2008/02/24 21:38Update
TAGS: jsf4jstl | JSF | JSTL

Syboos jsf4jstl では、1.20版からforEachのtokenizer機能を提供します。

概要


Syboos jsf4jstlのforEachタグのtokenizerプロパティはitemsに指定された文字列や、オブジェクトを変換するためのトークン処理クラス名が指定されることができます。
例:
<tc:forEach tokenizer="com.syboos.tfaces.sample.jstl.String2ListTokenizer">

トークンクラスはcom.syboos.faces.component.core.IForEachTokenizerインタフェースを継承する必要があります。
public interface IForEachTokenizer {
    public Object tokenize(Object value);
}
パラメータ:
value: itemsに指定された値。
戻り値:Object。トークンクラスに解析された後の値

forEach tokenizer例


例:
forEachのitems値“computer,mouse,keyboard”(String値)をトークンクラスcom.syboos.tfaces.sample.jstl.String2ListTokenizerに処理させる例:

jsp
<%@ taglib uri="http://tfaces.syboos.com/tag/core" prefix="tc" %>

<tc:forEach items="computer,mouse,keyboard" var="hardware" tokenizer="com.syboos.tfaces.sample.jstl.String2ListTokenizer">
    <h:outputText value="#{hardware}"></h:outputText>
    <f:verbatim><br></f:verbatim>
</tc:forEach>


String2ListTokenizer.java
package com.syboos.tfaces.sample.jstl;

import java.util.ArrayList;
import java.util.List;

import com.syboos.faces.component.core.IForEachTokenizer;

public class String2ListTokenizer implements IForEachTokenizer {
    private static final String SPLIT_CHAR = ",";
    
    public String2ListTokenizer() {
        super();
    }

    @SuppressWarnings("unchecked")
    public Object tokenize(Object value) {
        if (value == null || value.equals("")
                || !(value instanceof String)) {
            return value;
        }
        
        List <String>ret = new ArrayList();
        
        String []arrWords = ((String)value).split(SPLIT_CHAR);
        
        for (String word: arrWords) {
            ret.add(word);
        }
        
        return ret;
    }

}

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments