a4j:push doesn't work after rendering
Issue
- Using rendered attribute to start/stop a4j:push component in example below. After rendering of a4j:push element the handling of incoming push messages is broken. In the below example I set alert to notify about recieved message (see attached screenshot).
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:form>
<a4j:outputPanel id="push-panel">
<a4j:push address="TEST_ADDRESS" ondataavailable="alert('event.rf.data=' + event.rf.data)"
rendered="#{testBean.enabled}"/>
</a4j:outputPanel>
<a4j:commandButton id="startBtn" value="Start Push" action="#{testBean.startPush}" render="push-panel"/>
<a4j:commandButton id="stopBtn" value="Stop Push" action="#{testBean.stopPush}" render="push-panel"/>
<a4j:commandButton id="sendMessage" value="Send Message" action="#{testBean.sendMessage}"/>
</h:form>
</ui:composition>
Backing bean class:
public class TestBean {
private boolean enabled = false;
public boolean isEnabled() {
return enabled;
}
public void startPush() {
enabled = true;
}
public void stopPush() {
enabled = false;
}
public void sendMessage() throws MessageException {
TopicsContext.lookup().publish(new TopicKey("TEST_ADDRESS"), "Hello World");
}
}
Scenario:
1) Open page
2) Click "Start Push" button
3) Click "Send Message" button
4) Alert "event.rf.data=Hello World" is shown
5) Click "Stop Push" button
6) Polling is closed
7) Click "Start Push" button
8) Polling is started
9) Click "Send Message" button
10) Message is recieved
11) No alert, no javascript error
Environment
- Red Hat JBoss Web Framework Kit (WFK)
- 2.5
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.