JSF<;f:ajax>;提交后不呈现我的表单的标记
我试图在调用我的托管Bean操作(删除其中一个元素)之后呈现元素列表。 以下是我的jsf页面代码:JSF<;f:ajax>;提交后不呈现我的表单的标记,ajax,jsf,jsf-2,Ajax,Jsf,Jsf 2,我试图在调用我的托管Bean操作(删除其中一个元素)之后呈现元素列表。 以下是我的jsf页面代码: <div class="container"> <div class="starter-template"> <h:form id="productslist"> <div class="row"> <ui:repeat value="#{listProductsM
<div class="container">
<div class="starter-template">
<h:form id="productslist">
<div class="row">
<ui:repeat value="#{listProductsManagedBean.products}" var="product">
<div class="col-md-4">
<h1>
<h:outputText id="outputname" value="#{product.name}"/>
</h1>
<p>
<h:outputText id="outputprice" value="#{product.price} #{product.currency}"/>
</p>
<p>
<h:commandLink class="btn btn-primary btn-lg" value="Delete" action="#{listProductsManagedBean.delete}">
<f:ajax render="outputprice outputname"/>
<f:param name="id" value="#{product.id}" />
</h:commandLink>
</p>
</div>
</ui:repeat>
</div>
</h:form>
</div>
</div>
我希望呈现我的表单,并且不再显示已删除的元素。您不能以这种方式从
ui:repeat
中删除已删除的元素。请尝试render=“@form”
此外,在f:ajax
中使用execute=“@this”
是一种更好的做法。删除操作不需要提交整个表单
<h:commandLink class="btn btn-primary btn-lg" value="Delete" action="#{listProductsManagedBean.delete}">
<f:ajax execute="@this" render="@form"/>
<f:param name="id" value="#{product.id}" />
</h:commandLink>
已解决。我犯了一个愚蠢的错误。我没有在托管Bean中重新加载列表(在@PostConstruct
方法中填充),现在正在使用t:dataList
标记工作。我不知道该怎么做。我必须删除commandLink标记吗?我如何调用该操作?很抱歉让它太简短,我更新了答案并添加了代码。您的应用程序是否在调试模式下点击了delete方法?是的,事实上,如果我重新加载页面,删除的元素将消失。您能切换到myfaces进行尝试吗?可能是与此类似/相关的问题:它是否按照问题中的说明(意思是:
)工作,或者使用render=“@form”
)工作?没有按照问题中的提示进行尝试。我试试看。
<h:commandLink class="btn btn-primary btn-lg" value="Delete" action="#{listProductsManagedBean.delete}">
<f:ajax execute="@this" render="@form"/>
<f:param name="id" value="#{product.id}" />
</h:commandLink>