熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Struts 中 html:options 的使用

2013-11-23 20:23:02  來源: Java開源技術 

  html:options是Struts中比較復雜的一個tage lib用法靈活但是Sturts提供的源碼exercise taglib中沒有提出常用jsp+ActionForm這樣形式的最直接的總結現從中總結如下分兩種情況數組和Collection
  
  需求要達到
  <select name=beanCollectionSelect multiple=multiple size=>
  <option value=value >Label </option>
  <option value=value selected=selected>Label </option>
  <option value=value >Label </option>
  <option value=value selected=selected>Label </option>
  <option value=value >Label </option>
  <option value=value selected=selected>Label </option>
  <option value=value >Label </option>
  <option value=value >Label </option>
  <option value=value >Label </option>
  <option value=value >Label </option></select>
  
  要實現上述效果需要兩步
  第一設置ActionForm
  也分兩小步第一小步必須在ActionForm中有一句
  private Collection beanCollection;
  public Collection getBeanCollection();
  
  Collection beanCollection要確保是一個實現如ArrayList如果不是則會報No collection found的錯誤Struts的最大不方便就是一旦出問題定位很難不知道什麼地方使用錯誤或忘記設置什麼了
  
  因為前面需求中option的value值和label值不一樣那麼在beanCollection中保存的就是一個value和label組成的對象名為LabelvalueBean在LabelvalueBean中有兩個屬性value和label
  
  在程序某個地方要為beanCollection賦值
  
  Vector entries = new Vector(); 
  entriesadd(new LabelvalueBean(Label value ));     
  entriesadd(new LabelvalueBean(Label value ));     
  entriesadd(new LabelvalueBean(Label value ));     
  entriesadd(new LabelvalueBean(Label value ));     
  entriesadd(new LabelvalueBean(Label value ));      
  entriesadd(new LabelvalueBean(Label value ));     
   entriesadd(new LabelvalueBean(Label value ));      
  entriesadd(new LabelvalueBean(Label value ));      
  entriesadd(new LabelvalueBean(Label value ));      
  entriesadd(new LabelvalueBean(Label value ));
  
  然後執行setBeanCollection(entries);
  這樣ActionForm中的beanCollection算有值了
  第二小步需要設置Selectedselected有兩種單選和多選
  在ActionForm中必須有
  
  private String singleSelect = Single ; 
  public String getSingleSelect()
   {
     return (thissingleSelect);
    } 
  public void setSingleSelect(String singleSelect)
   {
     thissingleSelect = singleSelect;
    }
  
  或多選多選必須是數組
  
  private String[] beanCollectionSelect = { value value
                         value }; 
  public String[] getBeanCollectionSelect() {
    return (thisbeanCollectionSelect);  }
    public void setBeanCollectionSelect(String beanCollectionSelect[])
   {
      thisbeanCollectionSelect = beanCollectionSelect;
    }
  
  第二在Jsp中寫入tang lib語句如下
  
  <html:select property=beanCollectionSelect size= multiple=true>
      <html:optionsCollection name=testbean property=beanCollection/>  
   </html:select>
  
  其中testbean是ActionForm的名稱
  
  以上是html:options的Collection解決方案如果option值很少簡單地可以實現為數組兩步
  第一在ActionForm中
  
  private String values[] =
     { Magazine Journal News PaperOther }; 
  private String labels[] =
     { LMagazine LJournal LNews PaperLOther};
    private String selected = Magazine;  
  public String getSelected()
  {
     return selected;
    }  
  public void setSelected(String selected)
  {
     thisselected = selected;
    } 
  public String[] getvalues()
  {
     return values;
    }  
  public void setvalues(String[] values)
  {   thisvalues = values;
    } 
  public String[] getLabels()
  {
     return values;
    }  
  public void setLabels(String[] labels)
  {
     thislabels = labels;
    }
  
  第二步在jsp中
  
  <html:select property=selected >     
  <html:options name=testbean property=values labelProperty=label/>   </html:select>
  
  Struts標簽庫的使用還是需要小心不必完全使用Struts的標簽庫個人感覺Struts這種替代Html語句的標簽庫有一種牽強附會給使用者掌握帶來難度使用者除熟悉html外還必須理解Struts的對應標簽庫用法而且這種調試出錯問題也無法准確定位總是抽象地告訴你no bean 或no form
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28412.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.