У меня есть установка JSF / RichFaces с index.jsp
, который a4j:include
s другой кусок кода, который содержит rich:dataTable
.
Первоначально он хорошо обрабатывается, и при выборе элемента в списке dropDown index.jsp
и нажатии на кнопку «Получить» a4j:commandButton
используется метод setChosen
поддерживающего бина, чтобы делать ставки на бэкэнде. Поддерживающий компонент обновляет членов класса, чьи методы получения затем вызываются элементами чтения модели в отдельном файле content.jsp
, который a4j:include
d. Появится моя обновленная вкладка.
Я вижу вывод в консоли eclipse. Но когда я снова нажимаю кнопку, ничего не происходит. Ничего в журнале tomcat 6.0 и ничего в консоли.
EDIT1
Сужая проблему до моего файла content.jsp
, а не приведенного выше кода index.jsp
, я обнаружил, что проблема заключается в элементе rich:dataTable
. Когда я удаляю только этот элемент из content.jsp
, я могу снова и снова нажимать на кнопку «Восстановить», и она перезагружает панель моих вкладок. Как только я вставил его, первый щелчок в порядке, а затем кнопка будет щелкать, но ничего не происходит, и кнопка не отсоединяется назад.
Метод, предоставляющий данные rich:dataTable
, не должен вызывать подозрений, поскольку он работает по крайней мере в первый раз, но он выполняет только некоторые процедуры xpath и возвращает ArrayList<MyDataList>
.
Учитывая редактирование, кто-нибудь может теперь предложить, как использовать rich:dataTable
, чтобы это не вызывало никаких проблем? Элемент находится внутри rich:tabPanel
, который находится внутри h:form
, но это все.
Спасибо
EDIT2 :
В ответ на комментарий с комментариями, приведенный ниже, ниже приведен полный список кода, на который влияют, настолько краткий, насколько будет воспроизведена проблема. @Damo, пожалуйста, обратите внимание, что a4j:commandButton
и rich:dataTable
находятся в разных файлах, так как последний находится в файле jsp, который a4j:include
d.
Также обратите внимание, что ссылки <%@ taglib uri=...
были удалены из обоих файлов.
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>
Большое спасибо за то, что посмотрели на это.
EDIT3
В соответствии с просьбой я попытался инкапсулировать a4j:include
в h:form
. Чтобы во вложенном контенте не было вложенной формы h:, я заменил вмещающий тег h:form
в content.jsp
на h:panelGrid
.
Когда я повторил это, второй щелчок по a4j:commandButton
все еще вызывал зависание, но я проверил с помощью firebug, и POST http://localhost:8888/index.jsf 200 13ms
произошло, но ответ был пустым. Это помогает?