Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF<;f:ajax>;提交后不呈现我的表单的标记_Ajax_Jsf_Jsf 2 - Fatal编程技术网

JSF<;f:ajax>;提交后不呈现我的表单的标记

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

我试图在调用我的托管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>

我希望呈现我的表单,并且不再显示已删除的元素。

您不能以这种方式从
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>