Richfaces 4.2.2
我在 rich:datatable 中添加了一个按钮,该按钮会导致出现 rich:popup 面板。弹出面板包含 a<rich:editor/>
和 2 <h:commandButton/>
s
数据表中的按钮调用backing bean中的一个方法来设置要编辑的String,编辑器映射到这个属性——我知道按钮是在backing bean中设置String。
我还在<h:outputText/>
弹出面板中添加了一个以显示要编辑的字符串的值
问题是:
- 当编辑器显示时,在源按钮被按下几次以使其进入和退出源模式之前,无法使用编辑面板
- 支持 bean 属性的值未显示在编辑器中
- 映射到支持 bean 中的方法的 commandButton 不调用该方法
- outputText 第一次显示正确的值,但是当使用数据表中的不同行时,它在后续使用弹出面板时不会改变
我尝试过以相同的形式和单独的形式使用弹出窗口和数据表,并在弹出面板内部和外部尝试了单独的形式
这是页面
<h:html xmlns="http://www.w3c.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
.
.
.
<h:form id="blogForm" prependId="false">
<rich:popupPanel id="mp" minHeight="600" minWidth="450" height="600" width="800" resizeable="true">
<f:facet name="header">
<h:outputText value="Modal Panel Title" />
</f:facet>
<rich:editor id="editor" toolbar="full" value="#{blogBean.currentEntry}" skin="office2003" viewMode="visual">
<f:param name="auto_focus" value="editor" />
</rich:editor>
<h:outputText escape="false" value=")))#{blogBean.currentEntry}(((" />
<h:commandButton value="Save" action="#{blogBean.save}">
<rich:componentControl target="mp" operation="hide" />
</h:commandButton>
<h:commandButton value="Cancel" >
<rich:componentControl target="mp" operation="hide" />
</h:commandButton>
</rich:popupPanel>
<a4j:commandButton value="Add new post" rendered="true" >
<rich:componentControl target="mp" operation="show" />
</a4j:commandButton>
<h:panelGrid columns="1">
<a4j:outputPanel id="panel" layout="block">
<rich:dataTable value="#{blogBean.entries}" columns="1" var="entry" rows="20" id="repeat" >
<rich:column width="800">
<rich:panel>
<f:facet name="header">
<a4j:commandButton value="Edit" rendered="true" oncomplete="#{rich:component('mp')}.show()">
<f:setPropertyActionListener value="#{entry}" target="#{blogBean.currentEntry}" />
</a4j:commandButton>
</f:facet>
<h:outputText escape="false" value="#{entry}" />
</rich:panel>
</rich:column>
</rich:dataTable>
</a4j:outputPanel>
</h:panelGrid>
</h:form>
</h:body>
</h:html>