如何呈现< p:selectOneMenu> [英] How to rendered <p:selectOneMenu>

查看:128
本文介绍了如何呈现< p:selectOneMenu>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法呈现selectOneMenu,而只能禁用该项

I am unable to rendered a selectOneMenu but only to disable the item

例如,它正在工作:

<p:panel header="Field Chooser">  
    <h:panelGrid columns="2" cellpadding="5">  
        <p:selectOneMenu id="l1" value="#{acqBean.gb1}">  
            <f:selectItem itemLabel="Group By" itemValue="" />  
            <f:selectItems value="#{acqBean.level1}" />  
            <p:ajax update="l2" listener="#{acqBean.handleGroupChange}"/>  
        </p:selectOneMenu>  
        <p:selectOneMenu id="l2" value="#{acqBean.gb2}" disabled="#{acqBean.renderLevel2}">  
            <f:selectItems value="#{acqBean.level2}" />  
        </p:selectOneMenu>  
    </h:panelGrid>  
    <p:separator /> 
</p:panel> 


public void handleGroupChange() {
    if (gb1 != null && !gb1.equals("")) {
        level2 = level2Data.get(gb1);
        renderLevel2 = false;
    } else {
        level2 = new HashMap<String, String>();
        renderLevel2 = true;
    }
}

而这个不是:

<p:selectOneMenu id="l2" value="#{acqBean.gb2}" rendered="#{acqBean.renderLevel2}">  
            <f:selectItems value="#{acqBean.level2}" />  
        </p:selectOneMenu> 

请提供任何建议

谢谢

推荐答案

您不能Ajax更新本身是有条件呈现的组件.您只能Ajax更新总是 呈现的组件.一个简单的原因是,当不呈现该组件时,结果HTML代码中基本上没有任何内容,可以由JavaScript根据ajax响应进行选择和操作.

You can't ajax-update a component which is by itself conditionally rendered. You can only ajax-update a component which is always rendered. The simple reason is, when the component is not rendered, then there's basically nothing in the resulting HTML code which can be selected and manipulated by JavaScript based on the ajax response.

因此,将具有rendered属性的<p:selectOneMenu>放入没有rendered属性的<h:panelGroup>中,并在您的Ajax更新中引用它.

So, put the <p:selectOneMenu> with the rendered attribute in for example a <h:panelGroup> without the rendered attribute and refer it instead in your ajax update.

<p:selectOneMenu id="l1" value="#{acqBean.gb1}">  
    <f:selectItem itemLabel="Group By" itemValue="" />  
    <f:selectItems value="#{acqBean.level1}" />  
    <p:ajax update="l2group" listener="#{acqBean.handleGroupChange}"/>  
</p:selectOneMenu>  
<h:panelGroup id="l2group">
    <p:selectOneMenu id="l2" value="#{acqBean.gb2}" rendered="#{acqBean.renderLevel2}">  
        <f:selectItems value="#{acqBean.level2}" />  
    </p:selectOneMenu>  
</h:panelGroup>

另请参见:

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆