0

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

<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>

我也在同一个论坛和其他论坛上阅读了相关问题。但问题没有解决。我该如何解决。请帮帮我

更新 :-

托管豆

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());

        }
    }
4

1 回答 1

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>

然后它工作正常。

于 2013-05-22T02:03:18.377 回答