我的结构有点复杂。首先,我开始问题表。每个问题都有一个子类别和一个主类别,每个子类别也有一个主类别。此外,主类有子类,子类有问题。
然后,我尝试如下列出它们。
我使用 JSF SelectManyCheckbox 创建了一个动态 Web 表单。如下:
<ui:repeat var="mainCatvar" value="#{dprEdit.mainCategories}">
<h:outputText value="#{mainCatvar.mainCatName}" styleClass="mainTitle"/>
<ui:repeat var="subCategory" value="#{mainCatvar.subCategories}">
<h:outputText value="#{subCategory.subCatName}" styleClass="title" />
<p:selectManyCheckbox value="#{dprEdit.selectedProblems[subCategory]}">
<f:selectItems value="#{subCategory.problems}" var="problem"
itemValue="#{problem.problemId}"
itemLabel="#{problem.problemName}" />
</p:selectManyCheckbox>
</ui:repeat>
</ui:repeat>
在java代码中,
problems = new ProblemDAO(ConnectionManager.getConnection())
.getProblems(formId);
for (int i = 0; i < problems.size(); i++) {
Problem problem = problems.get(i);
if (subcat == problem.getSubCat())
problemIdList = addElement(problemIdList,problem.getProblemId().toString());
else
Arrays.fill(problemIdList, null);
problemIdList = addElement(problemIdList,problem.getProblemId().toString());
subcat = problem.getSubCat();
selectedProblems.put(problem.getSubCat(), problemIdList);
}
PS:addElement 是一个函数,用于将元素添加到长度已定义的数组中。
我想,我将如下数据发送到 xhtml。
(subcat1, [1,2])
等等(subcat3,[5])
……
的值dprEdit.selectedProblems[subCategory]
是一个列表。
我发送一个列表作为一个值。
所以我希望1,2,5
必须检查其 id 的问题,但他们没有。
我哪里错了?
JSF 2.2、Mojarra、PrimeFaces 和 Tomcat 7.x。