Posted
Filed under JSP, JAVA

게시판을 구현중 skin 디렉토리의 폴더 목록을 뽑아 와서 Select box에 보여줘야 될 경우가
발생 했다.
이것 저것 테스트 해본 결과..

org.apache.struts.util.LabelValueBean  을 이용하여 lavel, value값으로 ArrayList에 넣고
iterate  시켰다..

-천천히 보면 누구나 이해 할 수 있음 ... 더 좋은 방법이 있다면..
scormrte@gmail.com 이나 뎃글로 ... 조언 부탁 드립니다.

간단 한 예로
 - action
ArrayList skinList = futil.getDirectoryList(skin_path);
   skinList = ConvertLableValueBean.convert_from_ArrayList(skinList);
   request.setAttribute("skinList",skinList);


-jsp page
<select name="bcf_skin">
      <logic:iterate name="skinList" type="org.apache.struts.util.LabelValueBean" id="skin_vo">
       <option value="test"><bean:write name="skin_vo" property="value" /></option>
      </logic:iterate>
     </select>


-사용자 정의 클레스
import org.apache.struts.util.LabelValueBean;
import java.util.ArrayList;
import java.util.List;

public class ConvertLableValueBean {
 public static ArrayList convert_from_ArrayList(ArrayList targetList){
  ArrayList list = new ArrayList();
  for(int i=0; i<targetList.size(); i++){
   list.add(new LabelValueBean( targetList.get(i).toString(), targetList.get(i).toString() ));
  }
  return (ArrayList)list;
 }
 
 public static ArrayList convert_from_ArrayList(ArrayList LabelList, ArrayList LabelValue){
  ArrayList list = new ArrayList();
 
  for(int i=0; i<LabelList.size(); i++){
   list.add(new LabelValueBean( LabelList.get(i).toString(), LabelValue.get(i).toString() ));
  }
 
  return (ArrayList)list;
 }
 
}



-----------------------------------------------------------------------------------


import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.util.ArrayList;
public class FileUtil {
 
 private ArrayList list=null;
 private File dir;
 private File[] dirlist;
 
 public FileUtil(){
  list = new ArrayList();
 }
 
 //directory filter
 private FileFilter getDirectoryFilter(){
  FileFilter fileFilter = new FileFilter() {
      public boolean accept(File file) {
          return file.isDirectory();
      }
  };
  return fileFilter;
 }
 
 //file filter
 private FilenameFilter getFileFilter(){
  FilenameFilter filter = new FilenameFilter() {
      public boolean accept(File dir, String name) {
          return !name.startsWith(".");
      }
  };
  return filter;
 }
 
 
 public ArrayList getdirlist(String path){
  dir = new File(path);
  conv_fileArry_to_list(dir.listFiles(getFileFilter()));
  return list;
 }
 
 public ArrayList getDirectoryList(String path){
  dir = new File(path);
  conv_fileArry_to_list(dir.listFiles(getDirectoryFilter()));
  return list;
 }
 
 private void conv_fileArry_to_list(File[] dirlist){
  this.list.clear();
  for (File flist : dirlist){
   this.list.add(flist.getName());
  }
 }
}

2010/02/16 23:06 2010/02/16 23:06