a4j: include rich: dataTable wirkt sich negativ auf a4j: commandButton aus
Ich habe ein JSF / RichFaces-Setup mit einemindex.jsp
welchea4j:include
s ein weiterer Code, der a enthältrich:dataTable
.
Es wird zunächst gut gerendert und ein Element auf der Seite ausgewähltindex.jsp
Dropdown-Liste von und klicken Sie auf "Abrufen".a4j:commandButton
verwendet die Backing BeanssetChosen
Methode zu tun, es ist auf dem Back-End-Gebot. Das Backing Bean aktualisiert Klassenmitglieder, deren Getter dann von den Modellleseelementen in einer separaten Datei aufgerufen werdencontent.jsp
welches ista4j:include
d. Mein aktualisiertes tabPanel wird angezeigt.
Ich kann die Ausgabe in der Eclipse-Konsole sehen. Aber wenn ich erneut auf den Knopf drücke, passiert nichts. Nichts im Tomcat 6.0-Protokoll und nichts auf der Konsole.
EDIT1 Eingrenzen des Problems auf meinecontent.jsp
Datei und nicht die oben genanntenindex.jsp
Code, ich habe festgestellt, dass einrich:dataTable
Element ist das Problem. Wenn ich gerade dieses Element aus demcontent.jsp
Ich kann immer wieder auf die Schaltfläche "Abrufen" klicken und meine Registerkarte wird neu geladen. Sobald ich es eingegeben habe, ist der erste Klick in Ordnung, und dann klickt die Schaltfläche, aber es tritt nichts auf und die Schaltfläche wird nicht wieder entfernt.
Die Methode, die das bereitstelltrich:dataTable
with data sollte nicht verdächtig sein, da es zumindest beim ersten Mal funktioniert, sondern nur einige xpath-Routinen ausführt und a zurückgibtArrayList<MyDataList>
.
Kann mir jetzt jemand vorschlagen, wie man es benutzt?rich:dataTable
damit es keine probleme macht? Das Element befindet sich in einemrich:tabPanel
das ist in einemh:form
aber das ist alles.
Vielen Dank
EDIT2: In Reaktion auf eine kommentierte Anfrage unten ist die vollständige Auflistung des betroffenen Codes so kurz wie möglich, um das Problem zu reproduzieren. @Damo, bitte beachten Sie diea4j:commandButton
undrich:dataTable
befinden sich in verschiedenen Dateien, wie letztere in der JSP-Datei, die ista4j:include
d. Beachten Sie auch die<%@ taglib uri=...
Verweise wurden aus beiden Dateien entfernt.
index.jsp:
<f:loadBundle basename="messages" var="msg" />
<f:view>
<rich:page pageTitle="MyTitle" markupType="xhtml">
<h:outputText id="setup" value="#{MyBacking.setup}" />
<rich:toolBar height="35" itemSeparator="line">
<rich:toolBarGroup location="left">
<a4j:form>
<a4j:outputPanel id="panel">
<h:outputText style="text-align: center" value="Select " />
<h:selectOneMenu id="nodes" value="#{MyBacking.chosen}">
<f:selectItems value="#{MyBacking.nodes}" />
</h:selectOneMenu>
<a4j:commandButton value="Retrieve"
reRender="panel,contentPanel,currNode,lastOp"
onclick="this.disabled=true" oncomplete="this.disabled=false" />
</a4j:outputPanel>
</a4j:form>
</rich:toolBarGroup>
</rich:toolBar>
<rich:panel>
<h:panelGroup layout="block" id="contentPanel">
<a4j:include viewId="#{MyBacking.viewId}">
<f:param name="targetIdParam" value="content" />
</a4j:include>
</h:panelGroup>
</rich:panel>
</rich:page>
</f:view>
a4j:include
d content.jsp
:
<h:form id="myConfig">
<rich:tabPanel switchType="client" rendered="true">
<rich:tab styleClass="tab" label="Connections">
<rich:dataTable onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
cellpadding="0" cellspacing="0" width="100%" border="0" var="item"
value="#{MyBacking.DataList}">
<rich:column style="text-align:center" width="150px">
<h:outputText styleClass="txtBold"
value="#{item.info}:#{item.other}" />
</rich:column>
</rich:dataTable>
</rich:tab>
</rich:tabPanel>
</h:form>
Vielen Dank, dass Sie sich das angesehen haben.
EDIT3 Wie gewünscht habe ich versucht das einzukapselna4j:include
innerhalb einesh:form
. Damit der enthaltene Inhalt das Verschachteln eines h: -Formulars vermeidet, habe ich das Beiliegende ersetzth:form
tag incontent.jsp
mit einemh:panelGrid
. Wenn ich das nochmal mache, klicke ich das zweite Mal aufa4j:commandButton
verursachte immer noch einen Hang, aber ich überprüfte mit firebug und aPOST http://localhost:8888/index.jsf 200 13ms
aufgetreten, aber die Antwort war leer. Hilft das?