2016-04-03 43 views
0

在JSF 1.2 selectOneMenu用於列表中的一個選定的值,我在JSF 1.2如何顯示從數據庫

工作我已填充使用從數據庫selectOneMenu列表。現在我的要求是,在來自數據庫的列表中,有一個值必須顯示爲選中的值。但我不能那樣做。

我張貼我的代碼是我迄今所做的,

我的豆代碼

mem = new MemberProxy().getMemberDetails(loggedInUser 
         .getUserAccessList().get(0).getClientCode(), loggedInUser 
         .getUserAccessList().get(0).getCertificateNumber()); 

      memberDependent.setInsuredMemberName(new SelectItem(mem.getNameFirst())); 

我的JSP代碼

<h:panelGroup styleClass="panelGroup" id="grpMemDep"> 
              <h:selectOneMenu value="#{searchUserProfileBean.insuredMemberName}" id="memDepCode" styleClass="inputfont" onchange="getMemberDepInfo();" >            
                <f:selectItems id="selectItems32" 
                 value="#{searchUserProfileBean.memberDependentList}" /> 
               </h:selectOneMenu> 

             </h:panelGroup> 

這是怎麼了我正在構建列表的方式

MemberDependentBO memberDependent = new MemberDependentBO(); 

      List<DependentDTO> dependentList = new MemberProxy() 
      .getDependentListFormMember(loggedInUser 
        .getUserAccessList().get(0).getClientCode(), 
        loggedInUser 
        .getUserAccessList().get(0).getCertificateNumber()); 
      List<SelectItem> selList=new ArrayList<SelectItem>(); 

      for(DependentDTO depDTO:dependentList){ 

       SelectItem sel = new SelectItem(); 
       sel.setLabel(depDTO.getNameFirst()); 
       sel.setValue(depDTO.getCertNumber()+"#"+depDTO.getClientCode()+"#"+depDTO.getDependentCode()); 
       selList.add(sel); 
      } 
      mem = new MemberProxy().getMemberDetails(loggedInUser 
         .getUserAccessList().get(0).getClientCode(), loggedInUser 
         .getUserAccessList().get(0).getCertificateNumber()); 

      memberDependent.setInsuredMemberName(new SelectItem(mem.getNameFirst())); 
      SelectItem sel = new SelectItem(); 
      sel.setLabel(mem.getNameFirst()); 
      sel.setValue(mem.getCertNumber().toString().trim()+"#"+mem.getClientCode().toString().trim()); 
      selList.add(sel); 

      memberDependent.setMemberDependentList(selList); 

在這裏我使用了一個selectItem類型的變量,我將其設置爲我的bean,並且我試圖在列表中顯示,但它不起作用。

+0

這裏你有很多與「selectOneMenu」有關的信息http://stackoverflow.com/tags/selectonemenu/info包括如何設置一個選定的項目。 – RubioRic

+0

@RubioRic你可以編輯我的代碼,我完全無能爲力 – born2code

+0

在鏈接中出現的例子中,選定的項目是一個簡單的字符串。你有沒有嘗試在searchUserProfileBean.insuredMemberName中使用字符串? – RubioRic

回答

0

讓我紀念你的代碼的三點

for (DependentDTO depDTO:dependentList){ 
    SelectItem sel = new SelectItem(); 
    sel.setLabel(depDTO.getNameFirst()); 
    sel.setValue(depDTO.getCertNumber()+"#"+depDTO.getClientCode()+"#"+depDTO.getDependentCode()); 
    selList.add(sel); // [1] 
} 

mem = new MemberProxy().getMemberDetails(loggedInUser 
        .getUserAccessList().get(0).getClientCode(), loggedInUser 
        .getUserAccessList().get(0).getCertificateNumber()); 

memberDependent.setInsuredMemberName(new SelectItem(mem.getNameFirst())); // [2] 

SelectItem sel = new SelectItem(); 
sel.setLabel(mem.getNameFirst()); 
sel.setValue(mem.getCertNumber().toString().trim()+"#"+mem.getClientCode().toString().trim()); 
     selList.add(sel); // [3] 

memberDependent.setMemberDependentList(selList); 

[1]是要在此列表中已經選擇的價值?

[2]您正在創建並沒有確定值的項目。項值將等於項標籤:mem.getNameFirst()

[3]在這一點上要包括與相同標籤但與在所生成的一個不同值的項[2] 。除了生成的值是從在[1]

sel.setValue(depDTO.getCertNumber()+"#"+depDTO.getClientCode()+"#"+depDTO.getDependentCode()); 
sel.setValue(mem.getCertNumber().toString().trim()+"#"+mem.getClientCode().toString().trim()); 

產生。在您正在修整和不包括第三元件「dependentCode」

第二句的值不同嘗試此

SelectItem sel = new SelectItem(); 
    sel.setLabel(mem.getNameFirst()); 
    // INCLUDE DEPENDENT CODE 
    sel.setValue(mem.getCertNumber()+"#"+mem.getClientCode()+"#"+mem.getDependentCode()); 

    memberDependent.setInsuredMemberName(sel); 

    selList.add(sel); // ONLY, ONLY IF ITEM IS NOT INCLUDE IN LOOP [1] 

    memberDependent.setMemberDependentList(selList);