Компонент JSF Primefaces Update после изменения его значения в компоненте поддержки - PullRequest
0 голосов
/ 26 мая 2018

После поиска в Интернете ответов и ни один из них не работает, я решил опубликовать вопрос здесь.Я пытаюсь создать приложение чата с 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 ().

Кто-нибудь может мне помочь?

...