0

让我们从简单的开始: - 一个简单的搜索表单 - 在表单中声明了两个 h:selectOneMenu 组件 - 第二个 selectOneMenu,根据选择第一个 selectOneMenu 的项目(使用 ajax)进行刷新为此,我在请求中使用了一个中央 Bean范围,因为这两个selectOneMenus在很多其他页面上都声明了,所以我不需要多次定义以下两个方法:

页面支持:

@SuppressWarnings("unchecked")
public List<BranchenRubrik> getLst_branchenRubrik() {
    if(lst_branchenRubrik == null) {
        Session session = hibernate.InitSessionFactory.getInstance().getCurrentSession();
        Transaction tx = session.beginTransaction();
            this.lst_branchenRubrik = session.createQuery("from BranchenRubrik").list();
        tx.commit();
    }
    return lst_branchenRubrik;
}

// Loading Subkats with parameter
@SuppressWarnings("unchecked")
public List<BranchenRubrikSub> getBranchenRubrikSub(long p_parent) {

    List<BranchenRubrikSub> lst_branchenRubrikSub = new ArrayList<BranchenRubrikSub>();
    if(p_parent > 0) {          
        Session session = hibernate.InitSessionFactory.getInstance().getCurrentSession();
        Transaction tx = session.beginTransaction();
            lst_branchenRubrikSub = session.createQuery("from BranchenRubrikSub BRS WHERE BRS.parentRubrik.id = :p1").setLong("p1",p_parent).list();
        tx.commit();
    }
    return lst_branchenRubrikSub;
}

VDL:

<p:selectOneMenu value="#{searchBean2.fvz.branchenRubrikID}">
            <f:selectItem itemLabel="Bitte wählen" itemValue="0"/>
            <f:selectItems value="#{pageSupport.lst_branchenRubrik}" var="rubrik" itemValue="#{rubrik.id}" itemLabel="#{rubrik.rubrik}"/>
            <f:ajax render="uiBranchenSubKat"/> 


        </p:selectOneMenu>
        <h:outputText value="Unterkategorie" />
        <p:selectOneMenu id="uiBranchenSubKat" value="#{searchBean2.fvz.branchenRubrikSubID}">
        <f:selectItems value="#{pageSupport.getBranchenRubrikSub(searchBean2.fvz.branchenRubrikID)}" var="brs" itemLabel="#{brs.rubrik}" itemValue="#{brs.id}"/>
        </p:selectOneMenu>

这工作正常,我可以提交表单,所有数据都已保存并将重新显示。现在,我想包含一个绑定到方法的 h:panelGroup,它构建了一个分页菜单。如果我包含 h:panelGroup binding="#{searchBean2.paginationMenu}"/> 那么,我无法提交表单,因为它表示第二个 h:selectOneMenu 的值无效。

如果我删除“h:panelGroup 绑定”所有按预期工作。h:panelgroup 也可以绑定到一个空方法“return new HtmlPanelGroup()”,然后错误再次发生。看起来,组件绑定打破了一些验证。

谢谢你的时间

4

0 回答 0