您好我是JSF& Primefaces。我已经卡住了两天,试图将动态选择的检查值保存到DB。
我使用3个表格使用DB中的标签成功显示复选框:
我已经为表使用了单独的映射器,服务和类。
这是我的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());
}
}
我认为循环中存在问题。 如果有人提出建议或其他方法来解决问题,将会有所帮助。