在hashmap结构中使用selectManyCheckbox的动态表单

时间:2015-02-03 09:30:48

标签: jsf primefaces hashmap uirepeat selectmanycheckbox

我的结构有点复杂。首先,我开始问题表。每个问题都有一个子类别和maincategory,每个子类别都有一个主要类别。此外,主要类别有子类别,子类别有问题。

然后,我试着像下面一样列出它们。

我使用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]的值是一个列表。

我发送一个列表作为值。

所以我希望必须检查其ID为1,2,5的问题,但他们不会。

我哪里错了?

JSF 2.2,Mojarra,PrimeFaces和Tomcat 7.x。

0 个答案:

没有答案