【问题标题】:ajax listener was not updated the panels for selected item in primefacesajax 侦听器未更新 primefaces 中选定项目的面板
【发布时间】:2013-05-18 14:27:41
【问题描述】:

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

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

        }
    }

【问题讨论】:

  • 首先请发布您的托管 bean 代码。
  • 检查托管 bean 代码
  • 我看不到方法runObjectsValue。请始终发布完整代码。
  • 尝试在更新中使用 panelGrid id 代替 :form:displayDailyPanel

标签: jsf primefaces


【解决方案1】:

谢谢大家。我解决了这个问题。当我们被选中时,该行尚未创建,因为我们调用了“渲染”属性。所以我创建了面板并在下面提到了代码

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

然后它工作正常。

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2014-01-28
    相关资源
    最近更新 更多