Перенаправление с оператором return влияет на процесс рендеринга на следующей странице

У меня проблема с отображением данных. В моем приложении у меня есть эта панель навигации:

<h:form>
    <ul class="nav nav-tabs"> 
        <li class="active" role="presentation">
            <h:commandLink value="Veranstaltungen" action="#{eventController.redirect('veranstaltung.xhtml')}"/>
        </li>                       
        <li role="presentation"> 
            <h:commandLink value="Beacons" action="#{beaconcontroller.redirect('beacon.xhtml')}"/>
        </li>  
        [...]         
    </ul>
</h:form>

Redirect (beaconcontroller):

public String redirect(String link) {
    beacons = database.getAllBeacons();
    return "./" + link;
}

Навигация работает отлично, но когда я отправляю форму beaconData в beacon.xhtml моя таблица данных не будет отображена.

<h:form id="beaconsTable">
    <p:dataTable value="#{beaconcontroller.beacons}" var="b"
        tableStyleClass="table table-striped"
        emptyMessage="Keine Beacons verfügbar"
        style="font-size:14px"
        rowIndexVar="rowIndex"
        rowStyleClass="#{(rowIndex mod 2) eq 0 ? 'first-row' : 'second-row'}"
        >
        <p:column style="float:left;border:none;">
            <f:facet name="header">
                   <h:commandLink actionListener="#{beaconcontroller.sortBeacons}"> 
                         <f:ajax execute="@this" render="beaconsTable"/>
                         Beacons 
                   </h:commandLink>    
            </f:facet>
            <h:commandLink>
                 <f:ajax listener="#{beaconcontroller.fillFields(b)}" execute="@this" render=":beaconData beaconsTable :delete"/>
                 <h:outputText value="#{beaconcontroller.getCompleteString(b)}" style="#{beaconcontroller.currentBeacon == b ? 'color:#337AB7' : 'color:#555555'}"></h:outputText>
            </h:commandLink>
        </p:column>
    </p:dataTable>
</h:form>


</div>
<div class="col-lg-6">
    <h:form role="form" id="beaconData" enctype="multipart/form-data">
        <div class="form-group">
            <label>UUID*</label>
            <h:inputText id="id_uuid" binding="#{uuidAttribute}" class="form-control" value="#{beaconcontroller.uuid}" p:placeholder="Unternehmen" required="true" requiredMessage="Bitte UUID angeben" validatorMessage="Bitte nur Zahlen und Buchstaben angeben">
                <f:validateRegex pattern="[0-9a-zA-Z]+"/>
            </h:inputText>
            <h:message styleClass="errMessage" for="id_uuid" style="color: red"/>
        </div>
        [...]                  
        <h:commandButton type="submit" value="Speichern" actionListener="#{beaconcontroller.saveData}" class="btn btn-primary" disabled="#{beaconcontroller.currentBeacon == null}">
            <f:ajax render="beaconData :beaconsTable" execute="@form"/>
        </h:commandButton>
    </h:form>
</div>

Нажатие на другую запись в datatable, решает проблему. Тогда таблица будет предоставлена ​​после отправки. Но почему это не работает в первый раз?

Когда я сейчас переоденусь action="#{beaconcontroller.redirect('beacon.xhtml')}" в панели навигации, чтобы action="beacon.xhtml" все работает правильно. Я думал, что эти выражения означают одно и то же?

0 ответов

Другие вопросы по тегам