如何使用JSF动态地将选定的复选框值保存到数据库中?

时间:2015-12-01 05:54:34

标签: jsf primefaces

您好我是JSF& Primefaces。我已经卡住了两天,试图将动态选择的检查值保存到DB。

我使用3个表格使用DB中的标签成功显示复选框:

  • 第一张表:DEM_checkbox,其中包含复选框ID,标签
  • 第二个表:DEM_checkboxval,其中包含fileid,checkbox_id,value
  • 第三个表:DEM_folder,其中所有文件以表格格式保存在数据库中

我已经为表使用了单独的映射器,服务和类。

这是我的xhtml代码:

<ui:repeat value="dossierBean.dossier.dui.demCheckBoxList" var="c">
    <h:panelGrid columns="2" columnClasses="LeftColumn,LeftColumn">
        <h:selectBooleanCheckbox value="#{c.checkboxlabel}" styleClass="benefSelection" />
        <h:outputText value="#{c}" styleClass="subSectionTitle" />
    </h:panelGrid> 
</ui:repeat>

我使用此循环保存所选值:

public List<DEMCheckBoxUI> getDemCheckBoxList() {
        if (demCheckBoxList==null){
            demCheckBoxList = new ArrayList<DEMCheckBoxUI>();
            for (DEMCheckboxes cblabel :dossier.getDemCheckBoxList()){
                DEMCheckBoxUI cbui = new DEMCheckBoxUI();
                cbui.setLabel(cblabel);
                List<String> valueList = services.getDemCheckboxValueService().getCheckboxValue(dossier.getId(), cblabel.getCheckboxlabel());
                DEMCheckboxesValue cbvalue = new DEMCheckboxesValue();
                cbvalue.setDossier(dossier.getId());
                cbvalue.setId(cblabel.getId());
                cbvalue.setValue(valueList.get(0));
                cbui.setCboxvalue(cbvalue);
                demCheckBoxList.add(cbui);
            }
        }    
        return demCheckBoxList;
    }

通过 DENCheckboxes.java

从数据库中检索标签

已保存的值通过 DEMCheckboxesVal

插入

DemcheckboxUI的UI代码如下:

public class DEMCheckBoxUI {
    private DEMCheckboxes label;
    private DEMCheckboxesValue cboxvalue;
    public DEMCheckboxesValue getCboxvalue() {
        return cboxvalue;
    }
    public void setCboxvalue(DEMCheckboxesValue cboxvalue) {
        this.cboxvalue = cboxvalue;
    }
}

要保存到数据库,我使用以下代码:

demCheckboxService = DossierManager.getCurrent().getDemCheckboxService();
        if (dossier != null) {
            dossier.setDemCheckBoxList(demCheckboxService.getCheckboxesList());
            if (PgzTools.notEmpty(dossier.getId())) {
                reloadDossier(dossier.getId());
            }
        }

我认为循环中存在问题。 如果有人提出建议或其他方法来解决问题,将会有所帮助。

0 个答案:

没有答案