[英]JSF <f:ajax> tag not rendering my form after submitting
我试图在调用被删除的那些元素之一的Managed Bean操作后呈现元素列表。 这是我的jsf页面代码:
<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>
这是我调用的托管bean操作:
public void delete(){
ProductEntity product;
product = productEntityFacade.find(id);
productEntityFacade.remove(product);
}
我希望呈现我的表单,而不再次显示已删除的元素。
您无法以这种方式从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>
解决了。 我犯了一个愚蠢的错误。 我没有在Managed Bean中重新加载列表(由@PostConstruct
方法填充),现在正在使用t:dataList
标记工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.