После поиска в Интернете ответов и ни один из них не работает, я решил опубликовать вопрос здесь.Я пытаюсь создать приложение чата с ActiveMQ JMS и Java JSF.После того, как пользователь получает сообщение, я изменяю значение inputTextArea, но я не знаю, как обновить его во внешнем интерфейсе, чтобы сообщение отображалось на странице.Я использую Primefaces 6.2 и JSF 2.2
Вот моя страница jsf:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Chat with #{singleChatBean.manager.pickedFriend}</title>
</h:head>
<h:body>
<h:form id="form">
<h3>#{singleChatBean.manager.pickedFriend}</h3>
<div id="receivedMessageDiv">
<p:inputTextarea id="receivedMessage" value="#{singleChatBean.messages}" rows="20" style="width: 50%"/>
</div>
<br></br>
<div id="sendMessage">
<p:inputText value="#{singleChatBean.newMessage}" style="width: 45%" autocomplete="false" />
<p:commandButton value="Send" update="receivedMessage" action="#{singleChatBean.sendMessage()}" style="width: 5%" />
</div>
</h:form>
</h:body>
</html>
А вот мой боб:
@SessionScoped
@Named
public class SingleChatBean implements Serializable {
@Inject
private ManagerBean manager;
private ChatBrokerGateway cbg;
private String newMessage;
private String messages;
@PostConstruct
public void init() {
this.cbg = new ChatBrokerGateway(this.manager.getUser().getUsername()) {
@Override
public void onMessageReceived(Message msg) {
try {
String text = msg.getStringProperty("msg");
String fromUser = msg.getStringProperty("fromUser");
messages += "\n" + fromUser + ": " + text;
//refresh jsf component
} catch (JMSException ex) {
java.util.logging.Logger.getLogger(SingleChatBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
}
public ManagerBean getManager() {
return this.manager;
}
public String getNewMessage() {
return newMessage;
}
public void setNewMessage(String newMessage) {
this.newMessage = newMessage;
}
public String getMessages() {
return messages;
}
public void setMessages(String messages) {
this.messages = messages;
}
public void sendMessage() {
Logger.getLogger(SingleChatBean.class).info("Message: " + this.newMessage);
cbg.sendMessage(newMessage, manager.getUser(), manager.getPickedFriend());
this.messages += ("\nYou: " + this.newMessage);
}
}
Я пробовал несколько вещей, таких какajax, RequestContext # update () и FaceContext # getRenderedIds (). add ().
Кто-нибудь может мне помочь?