ajax listener未更新primefaces中所选项目的面板

时间:2013-05-18 14:27:42

标签: jsf primefaces

Iam尝试使用primefaces selectonemenu和ajax监听器来更新基于面板的选定数据时通过更新面板来处理。但我的面板没有更新,所选项目显示在控制台窗口。这意味着,ajax调用已进入托管bean。但它没有在faces页面更新并提到我的代码

<p:panelGrid columns="1"  style="align:center;width:80%" styleClass="companyHeaderGrid">
        <p:row>
            <p:column><h:outputLabel for="runobject" value="Run Object: " /></p:column>
            <p:column>  
             <p:selectOneMenu id="selectedState" value="#{TAScheduleBean.selectedRunObjectItem}"   >
             <p:ajax listener="#{TAScheduleBean.changePanelState}"  render="@this"  update=":form:displayDailyPanel"/>
            <f:selectItem itemLabel="Select One" itemValue="Select One" />  
            <f:selectItems value="#{TAScheduleBean.runObjectsValue}" />
            </p:selectOneMenu>

            </p:column>
            </p:row>

            <p:row id="displayDailyPanel"   rendered="#{TAScheduleBean.appSelectedRunObject eq 'Daily'}">
            <p:column>
                <p:outputLabel value=" N days" />
                        <p:outputLabel  value="Days=" /><p:inputText id="s"/>
            </p:column>
    </p:panelGrid>

我也在同一个论坛和其他论坛中阅读了相关问题 。但问题没有解决。我怎么解决这个问题。请帮帮我

更新: -

ManagedBean

public class TAScheduleBean extends TASBean  {
        private String selectedRunObjectItem="";
        private  String appSelectedRunObject="";
        TAScheduleBean(){

        }
        public void changePanelState(){
        String methodName="changePanelState";

        setPanelIsVisible(true);
        TALogger.log(Logger.INFO, className,
                methodName, "---------"+getSelectedRunObjectItem());
        setAppSelectedRunObject(getSelectedRunObjectItem().trim());

        }
    }

1 个答案:

答案 0 :(得分:0)

谢谢大家。我解决了这个问题。当我们选择项目为止时,因为我们调用''渲染'属性,所以没有创建行。所以我创建了面板,并在下面提到了代码

<p:panel id="toppanel">  <------- added panel

<p:panelGrid columns="1"  style="align:center;width:80%" styleClass="companyHeaderGrid">
        <p:row>
            <p:column><h:outputLabel for="runobject" value="Run Object: " /></p:column>
            <p:column>  
             <p:selectOneMenu id="selectedState" value="#{TAScheduleBean.selectedRunObjectItem}"   >
             <p:ajax listener="#{TAScheduleBean.changePanelState}"  render="@this"  update="toppanel"/>  <------changed
            <f:selectItem itemLabel="Select One" itemValue="Select One" />  
            <f:selectItems value="#{TAScheduleBean.runObjectsValue}" />
            </p:selectOneMenu>

            </p:column>
            </p:row>

            <p:row id="displayDailyPanel"   rendered="#{TAScheduleBean.appSelectedRunObject eq 'Daily'}">
            <p:column>
                <p:outputLabel value=" N days" />
                        <p:outputLabel  value="Days=" /><p:inputText id="s"/>
            </p:column>
    </p:panelGrid>
</p:panel>

然后它的工作正常。