我在JSF 2.2上有一个RichFaces项目,我想在处理用户请求时向用户显示状态更新和消息。我想在项目中使用 a4j:outputpanel
与一个简单的输出文本。我添加了一个 system.out
行,并在我的服务器控制台显示出来,但屏幕上的文字没有更新。
在我的过程类中。
private void showAdvise(final String message) {
System.out.println(">>>>>ComUI showAdvise: " + message);
this.beidCardStatusBean.updateStatus(message);
}
在我的jsf页面上: - 我启动了这个过程,用:
<a style="font-size:150%;" onclick="startEID();"
href="savePhoto.do?userId=#{detailUserBean.id}">#{UIMessages['button.loadPhoto']}</a>
<a:outputPanel id="eidPaneContainer" ajaxRendered="true">
<rich:popupPanel header="EID" id="eidPane" width="100" height="80">
<h:outputText id="eidStatus" value="#{beidCardStatusBean.getStatus()}" >
</h:outputText>
</rich:popupPanel>
</a:outputPanel>
为了更新组件,页面必须向服务器发送一个请求,当服务器上的东西发生变化时,它不会自动发生。简单的解决方法是使用一个投票,例如
<a4j:poll id="poll" interval="2000" enabled="#{bean.pollEnabled}" render="poll, popup" />
这将会每2秒重新发布一次弹出窗口。所以在你的情况下 startEID
需要设置 pollEnabled
并重新提交投票来开始它。
PopupPanel在重新渲染时可能会有一点问题,可以尝试设置一下 domElementAttachment="parent"
如果这不起作用。