如何解决a4j:included rich:dataTable对a4j:commandButton有负面影响
解决方法
我有一个JSF / RichFaces设置,index.jsp
其中a4j:include
s是另一段包含的代码rich:dataTable
。
它最初呈现良好,然后在index.jsp
‘dropDown列表中选择一个项目,然后单击’Retrieve’,a4j:commandButton
使用后备豆的setChosen
方法在后端进行出价。支持bean更新类成员,其吸气剂然后由模型读取在一个单独的文件中的元素称为content.jsp
是a4j:include
d。出现我更新的tabPanel。
我可以在eclipse控制台中看到输出。但是当我再次按下按钮时,什么也没发生。tomcat 6.0日志中没有任何内容,控制台上也没有任何内容。
EDIT1
将问题缩小到我的content.jsp
文件而不是上面的index.jsp
代码,我发现问题出在rich:dataTable
元素上。当我从中删除此元素时content.jsp
,我可以一遍又一遍地单击“检索”按钮,它会重新加载我的标签面板。一放进去,第一次单击就可以了,然后该按钮将单击,但是什么也没有发生,并且该按钮也不会取消单击。
提供rich:dataTable
with数据的方法应该至少在第一次使用时就不会令人怀疑,但它仅执行一些xpath例程并返回ArrayList<MyDataList>
。
有了编辑,现在任何人都可以建议如何使用rich:dataTable
它,以免造成任何麻烦吗?元素在内部rich:tabPanel
,内部在内,仅此h:form
而已。
谢谢
EDIT2
:为响应下面的评论请求,以下是完整的受影响的代码清单,其简短程度将重现该问题。@Damo,请注意a4j:commandButton
和,rich:dataTable
它们位于不同的文件中,因为后者位于a4j:include
d
的jsp文件中。另请注意,<%@ 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
仍然导致挂起,但是我检查了萤火虫并POSThttp://localhost:8888/index.jsf 200 13ms
发生了,但响应为空。这有帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。