2012-02-15 62 views
2

我在推廣基於ID的下拉值方面存在問題。如何填充和預選h:selectOneMenu?

查看:

<h:selectOneMenu id="dropDown" value="#{sampleVo.dropDownType}" "> 
    <f:selectItem itemValue="Select Value" itemLabel="Select Value" /> 
    <f:selectItems value="#{sampleService.dropDownList}" /> 
</h:selectOneMenu> 

SampleVo

public class SampleVo implements Serializable { 

    private String dropDownType; 

    // getters and setters 
} 

SampleService

public class SampleServiceImpl implements SampleService { 

    private List<SampleVo> listOfSampleVo; 
    private List<String> dropDownList; 

    public void onLoad() { 
     dropDownFunction(); 
    } 

    public void dropDownFunction() { 
     if (dropDownList == null) { 
      dropDownList = new ArrayList<String>(); 
      dropDownList.add("ONE"); 
      dropDownList.add("TWO"); 
      dropDownList.add("THREE"); 
     } 
    } 

} 

DB結構:

SAMPLE_ID  SAMPLE_DESCRIPTION 
     1     ONE 
     2     TWO 
     3     THREE 

在頁面加載過程中,所有三個下拉值都將使用默認的「選擇值」填充爲第一個選項。下拉值被映射到數據庫,帶有樣本ID。如果DB中存在記錄(即樣本ID = 2,樣本描述= TWO),我想根據ID顯示兩個下拉列表。我怎樣才能做到這一點?

+0

所以...你有什麼實際問題?你有沒有描述它,我還沒有看到它?你有任何錯誤或任何? – tartak 2012-02-15 08:31:42

+0

如果用戶從下拉列表中選擇THREE,我需要在Sample ID列中保存3個 – 2012-02-15 08:37:19

回答

0
public class SampleVO { 
    private int value; 
    private String name; 
    //getter & setter 
} 

在你的XHTML

<f:selectItems value="#{sampleService.dropDownList}" var="v" itemLabel="#{v.name}" itemValue="#{v.value}"/> 
0

好吧,我想你需要一個自定義的轉換器

你可以看看here

檢查符getAsString()和的getAsObject實現( )並根據您的需要進行定製。

提示。 getAsString應該返回TWO,並且getAsObject應該返回整個SampleVO對象。

樂:@Pablo你是對的。他需要太

1

相反的下拉列表作爲一個字符串列表,使它成爲一個SelectItem列表。您可以通過這種方式獨立設置值和標籤。

0

根據你的問題,當你的頁面被加載時,你是否想要默認選擇的值是(樣本id = 2,樣本描述= TWO)。所以你應該在你的「dropDownType」變量中初始化這個值。你的xhtml是錯的。如果你使用了f:selectItems標籤,你應該刪除f:selectItem標籤。

0

變化dropDownFunction() 使它成爲一個列表

public List<SelectItem> dropDownItems() { 
    ArrayList<SelectItem> items = new ArrayList<SelectItem>(); 
    items.add(new SelectItem(1,"ONE"); 
    items.add(new SelectItem(2,"TWO"); 
    items.add(new SelectItem(3,"TREE"); 
} 

,並更改dropDownType鍵入整數