gpt4 book ai didi

java - a4j :included rich:dataTable negatively affects a4j:commandButton

转载 作者:行者123 更新时间:2023-11-29 04:02:56 25 4
gpt4 key购买 nike

我有一个带有 index.jsp 的 JSF/RichFaces 设置哪个a4j:include这是另一段包含 rich:dataTable 的代码.

它最初呈现良好,并在 index.jsp 上选择一个项目的下拉列表并单击“检索”a4j:commandButton使用支持 bean 的 setChosen方法是在后端出价。支持 bean 更新类成员,其 getter 由单独文件中的模型读取元素调用 content.jsp这是 a4j:include d.出现我更新的 tabPanel。

我可以在 eclipse 控制台中看到输出。但是当我再次按下按钮时,什么也没有发生。 tomcat 6.0 日志中没有任何内容,控制台上也没有任何内容。

编辑1将问题缩小到我的 content.jsp文件而不是上面的 index.jsp代码,我发现一个 rich:dataTable元素是问题所在。当我从 content.jsp 中删除这个元素时,我可以一遍又一遍地重新单击“检索”按钮,它会重新加载我的选项卡面板。我一放进去,第一次点击就ok了,然后按钮就点击了,但是没有任何反应,按钮也没有取消点击退出。

提供 rich:dataTable 的方法with data 不应该被怀疑,因为它至少在第一次工作,但它只执行一些 xpath 例程并返回 ArrayList<MyDataList> .

鉴于编辑,现在任何人都可以建议如何使用 rich:dataTable以免造成任何麻烦?该元素位于 rich:tabPanel 中在h:form里面但仅此而已。

谢谢

编辑 2:为了响应下面的评论请求,以下是完整的受影响代码列表,尽可能简短地重现问题。 @Damo,请注意 a4j:commandButtonrich:dataTable位于不同的文件中,因为后者位于 jsp 文件中,即 a4j:include d.另请注意 <%@ taglib uri=...引用已从两个文件中删除。

索引.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>

非常感谢您看到这个。

编辑3根据要求,我尝试封装 a4j:includeh:form 内.为了使包含的内容避免嵌套 h:form,我替换了封闭的 h:formcontent.jsp 中标记用h:panelGrid .当我重新运行时,第二次单击 a4j:commandButton仍然导致挂起,但我用 Firebug 和 POST http://localhost:8888/index.jsf 200 13ms 检查了发生但响应为空。这有帮助吗?

最佳答案

我在重新渲染命令按钮/链接时经常遇到这种情况。

您的 a4j:form 实际上正在重新渲染自身。尝试将其更改为这样的内容:

<a4j:form>
<a4j:outputPanel id="panel">
<h:outputText style="text-align: center" value="Select " />
<h:selectOneMenu id="mySelect" value="#{MyBacking.chosen}">
<f:selectItems value="#{MyBacking.myList}" />
</h:selectOneMenu>
</a4j:outputPanel>
<a4j:commandButton value="Retrieve" reRender="panel"/>
</a4j:form>

更新:移动您的 h:form 以包含 a4j:include。很确定它需要一个表单,当然你不能嵌套表单。

关于java - a4j :included rich:dataTable negatively affects a4j:commandButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2237863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com