繁体   English   中英

JSF <f:ajax> 提交后标签未呈现我的表单

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM