Seam:Richfaces h:selectManyCheckbox无法获取检查值?

时间:2011-05-06 18:29:35

标签: richfaces seam

我正在使用丰富的面孔在Seam中尝试一件简单的事情。我正在显示来自其他来源的复选框列表,例如Ldap(组或角色),我想将已检查的复选框保存到我自己的表中,我称之为配置文件。

现在我不擅长此事,我提前道歉。我正在使用一个动作从getLdapOrgs方法中的ldap加载配置文件,它返回一个NGBProfiles列表,检查的那些应该被转移到相同动作的selectedNgbs。 selectedNgbs也是List的相同类型。该动作实现了ValueChangeListener,所以我有一个processValueChange方法覆盖,它现在没有做多少cos它永远不会在正确的时间被调用。

这是怎么回事:我加载页面,当我选中一个复选框时,页面会重新加载。检查消失了。永远不会调用保存按钮..还不是valuchangelistner ???唯一被调用的方法是getChosenNgbs方法。并且getLdapOrgs方法正确地从ldap加载角色。

我的动作类看起来像这样:

public void processValueChange(ValueChangeEvent arg0)
        throws AbortProcessingException {
    // TODO Auto-generated method stub
    System.out.println("in alue chaneg listener");
     if (getChosenNgbs() != null) {
            System.out.println(getChosenNgbs().size());
        }

}

public void setChosenNgbs(List<NotifyingBodyProfile> chosenNgbs) {
    this.chosenNgbs = chosenNgbs;
    for(NotifyingBodyProfile chosenNgb : chosenNgbs){
        entityManager.persist(chosenNgb);           
    }
}




public List<NotifyingBodyProfile> getChosenNgbs() {
    return chosenNgbs;
}

public List<NotifyingBodyProfile> getLdapOrgs(){

//从ldap获取数据     }

public  List<NotifyingBodyProfile>  getchosenNgbsfromDB(){

    List<NotifyingBodyProfile> chosenNgbsList= entityManager.createQuery("from NotifyingBodyProfile").getResultList();

    return chosenNgbsList;


}

public void save(){
    System.out.print("size of chosen Ngbs on save" + this.chosenNgbs.size());
}   

xhtml也非常直接。 (对不起格式化,代码块在某种程度上不起作用。以前它确实有效......但现在不行。我无法做到)

  

h:selectManyCheckbox title =“选择您要查看的NGB类型”   layout =“pageDirection”value =“#{ngbProfileAction.chosenNgbs}”id =“selectBoxContainer”&gt; valueChangeListener =“#{ngbProfileAction.processValueChange}”&gt;   标签= “#ngbProfile.name}”/&GT;

     

a:support event =“onclick”reRender =“selectBoxContainer”/&gt;

     

/小时:selectManyCheckbox&GT;

     

h:commandButton value =“Save”action =“#{ngbProfileAction.save}”/&gt;

1 个答案:

答案 0 :(得分:0)

您是否尝试将ajaxSingle =“true”添加到:support?

同样使用Checkboxes我通常使用“onchange”事件

HTH