我的JSF应用程序出了问题。 在页面上有一个表单,用户可以在该表单中动态地将组件添加到同一个表单中。当我使用ajax监听器添加组件时,它会在视图中以及模型中更新。但是当我尝试通过按下h:actionLink来删除dynamiccaly添加的组件时,它的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>
<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
如果单击列表中的元素,则会将其添加到div内的右侧以及带有文本“x”的commandLink。但是当我点击“x”链接时没有任何反应(没有执行任何功能)。就好像视图找不到组件一样。我正在使用Datamodels。
我一直在寻找网络上的解决方案,但我找不到一个。任何帮助将不胜感激。
答案 0 :(得分:1)
我设法通过在我的视图中使用以下代码来解决问题
<h:commandLink value="X">
<f:ajax render="@form" execute="@form" listener="#{persoon.delete}" />
</h:commandLink>
似乎我需要render =“@ form”和execute =“@ form”