【问题标题】:JSF and ajax: listener of dynamically added component never tirggeredJSF 和 ajax:动态添加组件的监听器从不触发
【发布时间】:2011-04-05 18:33:29
【问题描述】:

我的 JSF 应用程序有问题。 在页面上有一个表单,用户可以在其中动态地将组件添加到同一个表单中。当我使用 ajax 侦听器添加组件时,它会在视图和模型中更新。但是当我尝试通过按下 h:actionLink 来删除动态添加的组件时,它的 ajax 监听器永远不会被触发。

这是我的代码:

<h:form rendered="#{schrijvenController.verslagenController.documentSelected}">
                <p>
                    <span class="noLabel">
                        #{bundle.JongereJongere}:
                    </span>

                    <h:selectOneMenu id="jongereSelect" valueChangeListener="#{schrijvenController.selecteerJongere}" immediate="true"
                                     value="#{schrijvenController.currentJongere.jongereID}"
                                     title="--#{bundle.JongereSelect}--">
                        <f:selectItems value="#{jongereController.jongerenAsSelectItems}"/>
                    </h:selectOneMenu>
                </p>
                <h:panelGroup id="personen">
                    <ui:repeat value="#{schrijvenController.verslagenController.persoonItems}" var="persoon">                            
                        <div class="div_add_persoon">
                            <div class="div_add_persoon_left">
                                <span class="noLabel"> #{persoon.aanwezigheid}:</span>

                                <h:inputText value="#{persoon.searchTerm}"
                                             onkeypress="if (event.keyCode == 13) { onchange(); return false; }">
                                    <f:ajax event="keypress" render="persoonLijst" listener="#{persoon.getPersonenWhereNameLikeSelectItems}" />
                                </h:inputText> &nbsp;
                                <h:selectOneMenu id="persoonLijst" styleClass="fixedWitdhDropDown"
                                                 value="#{persoon.currentPersoon.persoon_id}"
                                                 title="--#{bundle.PersoonSelect}--">
                                    <f:selectItems value="#{persoon.personenWhereNameLikeSelectItems}"/>
                                    <f:ajax event="change" render="@form" listener="#{persoon.add}" />
                                </h:selectOneMenu>
                            </div>
                            <h:panelGroup layout="block" styleClass="div_add_persoon_right">
                                <ui:repeat value="#{persoon.personen}" var="persoonPersoon">
                                    <h:panelGroup layout="block" styleClass="div_schrijvenPersoon">
                                    <h:outputText value=" #{persoonPersoon.naam} #{persoonPersoon.voornaam} " />
                                    <h:commandLink value="X" id="linkske">
                                        <f:ajax event="click" render="@form" listener="#{persoon.delete}" />
                                    </h:commandLink>
                                    </h:panelGroup>
                                </ui:repeat>
                            </h:panelGroup>
                        </div> 
                    </ui:repeat>
                    <div class="clear" />

这是我认为的 Prt Sc: http://i206.photobucket.com/albums/bb69/bartloterman/pscreen.jpg?t=1302028364

如果单击列表中的元素,它会与带有文本“x”的 commandLink 一起添加到 div 内的右侧。但是当我单击“x”链接时,没有任何反应(没有执行任何功能)。就好像视图找不到组件一样。我正在使用数据模型。

我整天都在网上寻找解决方案,但找不到。任何帮助将不胜感激。

【问题讨论】:

    标签: ajax jsf


    【解决方案1】:

    我设法通过在我的视图中使用以下代码来解决问题

    <h:commandLink value="X">
          <f:ajax render="@form" execute="@form" listener="#{persoon.delete}" />
    </h:commandLink>
    

    看来我需要 render="@form" 和 execute="@form"

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 2011-06-29
      • 1970-01-01
      • 2016-05-06
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      相关资源
      最近更新 更多