a4j: включенный rich: dataTable отрицательно влияет на a4j: commandButton
У меня есть настройки JSF / RichFaces сindex.jsp
которыйa4j:include
S другой кусок кода, который содержитrich:dataTable
.
Первоначально он хорошо визуализируется, и выбор элемента наindex.jsp
в раскрывающемся списке и нажмите «Получить»a4j:commandButton
использует бобовsetChosen
способ сделать это торги на серверной части. Поддерживающий компонент обновляет членов класса, чьи геттеры затем вызываются элементами чтения модели в отдельном файле.content.jsp
которыйa4j:include
д. Появится моя обновленная вкладка.
Я вижу вывод в консоли 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
д. Также обратите внимание на<%@ 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: form, я заменил вмещающийh:form
отметить вcontent.jsp
сh:panelGrid
, Когда я перезапустить это второй щелчок наa4j:commandButton
все еще вызывал зависание, но я проверил с помощью firebug иPOST http://localhost:8888/index.jsf 200 13ms
произошло, но ответ был пустым. Это помогает?