`render =“@ all”`(无页面重新加载)vs`update =“@ all”`(页面重新加载)

时间:2016-10-06 11:46:41

标签: ajax forms primefaces jsf-2 facelets

我注意到,如果我使用

<f:ajax .... execute="@form" render="@all" />

我的页面被重新加载,而使用

<p:ajax .... process="@form" update="@all" /> // note the "p"

它没有。

更新

我的布局的标题部分,此表单位于此处。

<ui:composition
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core">


    <header>
        <div style="padding: 5px 0; text-align: right">

            <h:form id="frmSelectLang">
                <h:selectOneMenu id="selectLang" value="#{userBean.locale}">
                    <f:selectItems value="#{userBean.availableLangs}" />
                    <!--f:ajax execute="@form" render="@all"/-->
                    <p:ajax process="@form" update="@all" />
                </h:selectOneMenu>
            </h:form>

        </div>
    </header>

</ui:composition>

虽然我可能更喜欢前一种(注释掉的)方法(由于坚持使用Facelets),但后者的页面重新加载解决了我与前者的问题。

即,如果我切换语言,然后通过页面主要部分中的另一个表单添加内容(上面的代码是标题 - lang切换器中另一个表单的一部分),则第一次单击无法识别。删除也是如此(项目旁边有一个ajax驱动的delete按钮。)

更新2

这是我提交添加城市(Grad)的表单,添加后,每个输入旁边都有一个删除按钮:

<h:form id="frmGrad">
    <h:inputText id="naziv" label="Naziv grada" size="40" required="true" requiredMessage="Polje ne smije biti prazno!" value="#{gradManager.naziv}" />
    <h:commandButton id="submit" action="#{gradManager.kreiraj()}" value="#{btnlabels['btnSubmit']}">
        <f:ajax execute="@form" render=":frmDelete:spisak :foobar"/>
    </h:commandButton>
</h:form>

<hr />

<h:form id="frmDelete">
    <h:dataTable id="spisak" value="#{gradManager.gradovi}" var="grad">
        <h:column>
            <h:commandButton id="submit" action="#{gradManager.obrisi(grad.id)}" value="Obriši">
                <f:ajax execute="@form" render="frmDelete:spisak foobar" />
            </h:commandButton>
        </h:column>
        <h:column>#{grad.naziv}</h:column>
    </h:dataTable>
</h:form>

有没有方便的方法来解决这个问题?尽管事实上我最终可能会使用这种工作方法,但我想知道这个原因。

0 个答案:

没有答案