我有一个普通的数据表,包含编辑按钮,可以打开一个弹出窗口。
<h:form id="creditcard_configuration_form">
<rich:dataTable id="test" width="100%"
value="#{creditcardConfigurationService.cardsList}"
iterationStatusVar="it" var="card">
<rich:column>
<a4j:commandLink execute="@this" ajaxSingle="true"
oncomplete="#{rich:component('test123')}.show()">
<h:graphicImage value="../../resources/images/edit.gif"
alt="edit" />
<a4j:param value="#{it.index}"
assignTo="#{creditcardConfigurationAction.currentIndex}" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
<rich:popupPanel id="test123"
header="#{creditcardConfigurationAction.currentIndex}"
onmaskclick="#{rich:component('test123')}.hide()">
asdf
</rich:popupPanel>
</h:form>
在打开弹出窗口之前,我在bean中设置了一个索引变量。但是,在打开弹出窗口时(或至少不再是),JSF不会调用getter方法来获取index
a4j:param
。我发现,在渲染页面时会调用getter方法,但在此之后永远不会。 (意味着,对于弹出窗口,索引始终显示为0)。
包含索引var的bean是视图范围的,而服务bean是会话范围的。我使用的是最新版本的RichFaces(4.3.2 Final)和JSF 2.0.6。
答案 0 :(得分:0)
你的问题有点令人困惑,所以我证明了我预测的解决方案,以解决你的问题,
回答1:
首先参考这个link of richfaces show case with demo
这里是其代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<h:form>
<rich:panel>
<h:panelGrid columns="2">
<a4j:commandButton value="Set Name to Alex" render="rep">
<a4j:param value="Alex" assignTo="#{userBean.name}" />
</a4j:commandButton>
<a4j:commandButton value="Set Name to John" render="rep">
<a4j:param value="John" assignTo="#{userBean.name}" />
</a4j:commandButton>
</h:panelGrid>
</rich:panel>
<br />
<rich:panel>
<h:outputText id="rep" value="Selected Name:#{userBean.name}" />
</rich:panel>
</h:form>
</ui:composition>
你可以看到你需要render
任何组件(这里使用rep
),其中name
变量的getter setter被调用(在页面上提交请求范围中设置的参数值而不是调用getter-setter,它只在页面加载时调用getter。)
<强> 2 强>
首先检查您的数据与来自数据库的所有Param数据的0
是否相同,您可以在outputtext
之后使用值button
进行检查#{it.index}
{1}}。
还有一个预测,如示例所示,使用param
更改commandLink
,然后重试它可能会有效。