Java a4j:included rich:dataTable会对a4j:commandButton产生负面影响
我有一个JSF/RichFaces设置,带有Java a4j:included rich:dataTable会对a4j:commandButton产生负面影响,java,jsf,richfaces,Java,Jsf,Richfaces,我有一个JSF/RichFaces设置,带有index.jsp,其中a4j:includes另一段代码,其中包含rich:dataTable 它最初呈现良好,在index.jsp的下拉列表中选择一个项目并单击“检索”a4j:commandButton使用支持bean的setselected方法在后端进行竞价。支持bean更新类成员,其getter随后由模型读取元素在单独的文件content.jsp中调用,该文件是a4j:included。此时将显示我更新的选项卡面板 我可以在eclipse控制台
index.jsp
,其中a4j:include
s另一段代码,其中包含rich:dataTable
它最初呈现良好,在index.jsp
的下拉列表中选择一个项目并单击“检索”a4j:commandButton
使用支持bean的setselected
方法在后端进行竞价。支持bean更新类成员,其getter随后由模型读取元素在单独的文件content.jsp
中调用,该文件是a4j:include
d。此时将显示我更新的选项卡面板
我可以在eclipse控制台中看到输出。但当我再次按下按钮时,什么也没发生。tomcat 6.0日志中没有任何内容,控制台上也没有任何内容
EDIT1
将问题缩小到我的content.jsp
文件,而不是上面的index.jsp
code,我发现问题出在rich:dataTable
元素上。当我仅从content.jsp
中删除此元素时,我可以反复单击Retrieve按钮,它会重新加载我的选项卡面板。一旦我把它放进去,第一次点击是确定的,然后按钮会点击,但什么都没有发生,按钮不会松开回来
为rich:dataTable
提供数据的方法不应该是可疑的,因为它至少第一次工作,但它只执行一些xpath例程并返回ArrayList
考虑到编辑,现在有人能建议如何使用rich:dataTable
,这样就不会引起任何麻烦了吗?元素位于rich:tabPanel
中,它位于h:form
中,但仅此而已
谢谢
EDIT2:
下面是完整的受影响代码列表,以响应下面的注释请求,并尽可能简短地再现问题@Damo,请注意a4j:commandButton
和rich:dataTable
在不同的文件中,因为后者在jsp文件中,即a4j:include
d。
另外请注意,
我在重新启动命令按钮/链接时经常遇到这种情况
你的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中。非常确定它需要一个表单,当然你不能嵌套表单。我在重新编写命令按钮/链接时经常遇到这种情况
你的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中。非常确定它需要一个表单,当然你不能嵌套表单。修复方法是安装一个facelets jar。请参阅。修复方法是安装facelets jar。请参阅。检查firefox javascript控制台和日志显示页面,以便我们可以看到commandButton和DataTable检查firefox javascript控制台和日志显示页面,以便我们可以看到commandButton和DataTable良好的响应,但它不起作用。如果我使用a4j:outputPanel,我能不能忽略对a4j:form的需要?很有趣。按钮启动了一系列的支持bean工作,以完成不同的事情。我已经缩小了它的范围,这样它就可以正常工作,除非bean使用包含rich:dataTable
更新上面页面中包含的a4j:元素。我甚至不需要重新播放a4j:include来显示include的内容。a4j:包含的内容是否需要faces-config.xml导航内容?关于这一点,我会问另一个具体的问题。对不起,达莫,我已经检查了滴答声,因为它是那样的,或者重新问本质上相同的问题,然后被点燃。我没有在没有dataTable元素的情况下运行原始代码,所以我想可能有两个问题,但本质上我仍然有这个问题。问题有了新的标题。更新了问题以包含h:form
,但无效。回答很好,但不起作用。如果我使用a4j:outputPanel,我能不能忽略对a4j:form的需要?很有趣。按钮启动了一系列的支持bean工作,以完成不同的事情。我已经缩小了它的范围,这样它就可以正常工作,除非bean使用包含rich:dataTable
更新上面页面中包含的a4j:元素。我甚至不需要重新播放a4j:include来显示include的内容。a4j:包含的内容是否需要faces-config.xml导航内容?关于这一点,我会问另一个具体的问题。对不起,达莫,我已经检查了滴答声,因为它是那样的,或者重新问本质上相同的问题,然后被点燃。我没有在没有dataTable元素的情况下运行原始代码,所以我想可能有两个问题,但本质上我仍然有这个问题。问题有一个新标题。已更新问题以包括h: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>