Richfaces 4.0 Ajax Waitingpanel

  • Themenstarter Themenstarter Sym
  • Beginndatum Beginndatum
S

Sym

Gast
Hallo zusammen,

ich möchte, dass nach einer gewissen Zeit ein Fenster aufgeht, wenn der Ajaxrequest zu lange dauert. Gelöst habe ich das wie folgt:

[XML]<h:form id="form" prependId="false"
enctype="#{multipart == true ? 'multipart/form-data' : 'application/x-www-form-urlencoded'}"
acceptcharset="utf-8">

<script type="text/javascript">
var infoWindowAMShown = false;
var infoWindowAMTimer;
function showModalInfoWindow()
{
infoWindowAMTimer = setTimeout("if(!infoWindowAMShown){#{rich:component('ajaxLoadingModalBox')}.show();infoWindowAMShown=true;}", 500);
}
function hideModalInfoWindow()
{
if (infoWindowAMShown){#{rich:component('ajaxLoadingModalBox')}.hide();infoWindowAMShown=false;}else{if(infoWindowAMTimer)clearTimeout(infoWindowAMTimer);}
}
</script>
...
<a4j:status onstart="showModalInfoWindow()"
onstop="hideModalInfoWindow()"
onsuccess="hideModalInfoWindow()"
onerror="hideModalInfoWindow()" />

<rich😛opupPanel id="ajaxLoadingModalBox" minHeight="200"
minWidth="450" height="100" width="250" zindex="2000">
<f:facet name="header">
<h😱utputText value="Bitte warten" />
</f:facet>
<h😱utputText value="Ihre Anfrage wird bearbeitet. Bitte warten..." />
<div class="center">
<h:graphicImage value="/images/spinner.gif" alt="spinner"
width="100px" styleClass="right" />
</div>
<a4j:commandButton value="Abbrechen"
onclick="#{rich:component('ajaxLoadingModalBox')}.hide()"
styleClass="cancel" />
</rich😛opupPanel>
</h:form>[/XML]

Das funktioniert in der Regel auch:

Richfaces a4j:commandButton:
[XML]<a4j:commandButton action="#{userAdministration.search()}"
value="Suchen" styleClass="accept acceptBtn button"
render="userTableRegion" />[/XML]

JSF 2 h:commandButton:
[XML]<h:commandButton action="#{userAdministration.search()}"
value="Suchen" styleClass="accept acceptBtn button">
<f:ajax execute="@this" render="userTableRegion" />
</h:commandButton>[/XML]

Wenn ich das jedoch in einer Tabelle nutzen möchte, klappt das nicht. Das Fenster wird nicht geschlossen.

In einer rich:column befinden sich die Buttons:

[XML]<h:commandButton rendered="#{not user.active}"
action="#{userAdministration.acticateUser(user)}"
render="userTableRegion" value="Aktivieren" styleClass="accept"
immediate="true">
<f:ajax execute="@this" />
</h:commandButton>[/XML]
Hier geht das Waitingpanel auf, die Tabelle wird nicht neu gezeichnet und das Panel schließt sich nicht.

[XML]<h:commandButton rendered="#{user.active}"
action="#{userAdministration.deacticateUser(user)}"
value="Deaktivieren" styleClass="cancel" immediate="true">
<f:ajax execute="@this" render=":form:userTableRegion" />
</h:commandButton>[/XML]
Hier geht das Waitingpanel auf, die Tabelle wird auch neu gezeichnet, aber das Panel schließt sich nicht.

Hat jemand eine Idee?
 
Zuletzt bearbeitet von einem Moderator:
Danke, das prüfe ich mal. Obwohl ich gehofft habe, eine bestehende Richfaces-Lösung nutzen zu können. Leider hatte ich da bisher keinen Erfolg.
 

Zurück
Oben