public class CSV2ListConverter implements Converter {
   public Object getAsObject(FacesContext context, UIComponent component,
      String value) throws ConverterException {
   if ( context == null ) throw new NullPointerException( "context is null" );
   if ( component == null ) throw new NullPointerException( "component is null");
   if ( value == null ) return null;

   if ( value.lastIndexOf( "," ) == -1 ){
      throw new ConverterException( new FacesMessage( "CSV 文字列の変換に失敗しました。" ) );
   }

   String[] valueArray = value.split( "," );
   List list = new ArrayList();

   for (int i = 0; i < valueArray.length; i++) {
      list.add( valueArray[i] );
   }

   return list;
}

public String getAsString(FacesContext context, UIComponent component,
      Object value) throws ConverterException {
   if ( value == null ) return "";
   List list = (List)value;
   StringBuffer sb = new StringBuffer();
   int i = 0;

   // List→ CSV 文字列
   for (Iterator iter = list.iterator(); iter.hasNext();) {
      sb.append( (String) iter.next() );
      if ( 0 < i ) sb.append( "," );
      i++;
   }
   return sb.toString();
}