`render="@all"` (no page reload) vs `update="@all"` (page reloaded)
<p>I noticed that if I use</p>

<pre><code>&lt;f:ajax .... execute="@form" render="@all" /&gt;
</code></pre>

<p>my page gets reloaded, whereas using</p>

<pre><code>&lt;p:ajax .... process="@form" update="@all" /&gt; // note the "p"
</code></pre>

<p>it doesn't.</p>

<p><strong>UPDATE</strong></p>

<p>Header part of my layout, where this form is located.</p>

<pre><code>&lt;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"&gt;


    &lt;header&gt;
        &lt;div style="padding: 5px 0; text-align: right"&gt;

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

        &lt;/div&gt;
    &lt;/header&gt;

&lt;/ui:composition&gt;
</code></pre>

<p>While I may prefer the former (commented out) approach (due to sticking with Facelets), page reload with the latter solves this issue I'm having with the former.</p>

<p>Namely, if I switch the language and then add something through another form in the main part of the page (the above code is part of another form in the header - lang switcher), then the first click isn't being recognised. The same is true for deleting (there's the ajax-driven <code>delete</code> button next to the item).</p>

<p><strong>UPDATE 2</strong></p>

<p>This is the form I submit to add a City (Grad), and when added, there's a delete button next to each input:</p>

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

&lt;hr /&gt;

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

<p>Is there a convenient way to fix this? I'd like to know the underlaying cause, despite the fact I may end up using the working approach.</p>