f:h:selectManyCheckbox上的ajax在ui中不工作:重复:找不到组件

f:h:selectManyCheckbox上的ajax在ui中不工作:重复:找不到组件,ajax,jsf,primefaces,uirepeat,Ajax,Jsf,Primefaces,Uirepeat,我有以下问题:我正在ui:repeat中使用h:selectManyCheckBox。组件上附加了一个值更改侦听器,以及一个f:ajax。我希望在每次选择/取消选择时触发事件,然后操纵支持bean中的一些值并相应地更新视图。我将其简化为以下示例: JSF页面 #{string} 背豆 公共类测试{ 私有布尔测试布尔; 私人智力测验; List stringListe=new ArrayList(); 列表选择=新的ArrayList(“编号1”、“编号2”); //相应地,Getter+Se

我有以下问题:我正在
ui:repeat
中使用
h:selectManyCheckBox
。组件上附加了一个值更改侦听器,以及一个
f:ajax
。我希望在每次选择/取消选择时触发事件,然后操纵支持bean中的一些值并相应地更新视图。我将其简化为以下示例:

JSF页面

#{string}
背豆
公共类测试{
私有布尔测试布尔;
私人智力测验;
List stringListe=new ArrayList();
列表选择=新的ArrayList(“编号1”、“编号2”);
//相应地,Getter+Setter
public void valueChangeListener(ValueChangeEvent事件){
testInt=(int)(Math.random()*100);
系统输出打印项次(测试);
} 
对于此设置,我得到以下错误:

<f:ajax> contains an unknown id 'form:loop:0:options' - cannot locate it in the context of the component options
包含未知id“form:loop:0:options”-无法在组件选项的上下文中找到它
因此,呈现目标在这里似乎不是问题。相反,ajax的execute的隐式@this似乎失败了。换句话说:组件找不到自己。奇怪的是,这只适用于selectManyCheckbox。单个复选框很好。我假设这是由于selectMany类型作为“内部循环”,所以我们这里有两个嵌套的循环。这听起来很奇怪,就像我在中问的那样,只是在那里是渲染目标导致了问题

所以我的问题是:这是预期的行为吗?还是实现中的一些已知错误?我这样问是因为selectManyListBox和selectManyMenu工作得很好。。。 无论如何,我正在寻找一种解决这个问题的方法。还有其他人有类似的问题吗

注:不幸的是,c:foreach没有选项,否则我会尝试;)摆弄execute参数没有效果(例如execute=@form)


编辑:当使用Primefaces的
p:ajax
时,这项功能会起作用。我会暂时打开它,以防有其他有用的答案。如果有人知道p:ajax的不同之处,这也会很有趣。

注意到您的功能需求,我想知道您为什么要使用
h:selectManyChec框
ui中:重复
而不是只使用一个
h:selectManyChecbox
并操作其CSS和后端。页面显示多个条目的数据(在本例中为人员),它来自一个列表,因此ui:repeat。复选框用于创建人和他们可能拥有的东西之间的映射。我需要分别收集每个人的数据,因此repeat中有复选框。我不太明白如何使用“CSS和后端”,不管是什么“后端”来解决这个问题"包含;)假设您只有一个selectManyCheckbox和50个复选框,5个人,每个人10个。然后构造一个算法,将框分配给特定的人,例如1-10人1、10-20人2等。所以,如果您可以操纵框的CSS,问题将得到解决。如果您想以这种方式实现,我可以帮助您了解CSS和post这是一个答案吗?
public class TestAction {

    private boolean testBoolean;
    private int testInt;
    List<String> stringListe = new ArrayList<String>();
    List<String> selections = new ArrayList<String>("Number 1", "Number 2");
    // Getter +  Setter accordingly

    public void valueChangeListener(ValueChangeEvent event) {
        testInt = (int) (Math.random() * 100);
        System.out.println(testInt);
    } 
<f:ajax> contains an unknown id 'form:loop:0:options' - cannot locate it in the context of the component options