如何从数据库中显示JSF 1.2 selectOneMenu列表中的一个选定值

如何从数据库中显示JSF 1.2 selectOneMenu列表中的一个选定值,jsf,jsf-1.2,Jsf,Jsf 1.2,我在JSF1.2中工作 我使用数据库中的selectOneMenu填充了一个列表。现在我的要求是,在来自数据库的列表中,有一个值必须显示为选中。但我不能这样做 我正在发布我的代码我到目前为止做了什么 我的bean代码 mem = new MemberProxy().getMemberDetails(loggedInUser .getUserAccessList().get(0).getClientCode(), loggedInUser

我在JSF1.2中工作

我使用数据库中的selectOneMenu填充了一个列表。现在我的要求是,在来自数据库的列表中,有一个值必须显示为选中。但我不能这样做

我正在发布我的代码我到目前为止做了什么

我的bean代码

 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,并试图在列表中显示它,但它不起作用。

让我标记代码中的三点

 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);

这里有很多与selectOneMenu相关的信息,包括如何设置选定项。@RubioRic你能编辑我的代码吗?我完全理解在链接中显示的示例中,选定项是一个简单的字符串。您是否尝试在searchUserProfileBean中使用字符串。insuredMemberName?searchUserProfileBean.memberDependentList是字符串列表还是selectitem列表?@RubioRic searchUserProfileBean.memberDependentList是selectitem列表