java - 如何从 ChatMessage 类的列表中显示 String 消息属性?

标签 java jsf jakarta-ee xhtml jsf-2.2

我正在尝试学习 Java 和 Jsf,并且一直在从事聊天功能项目。我在点击发送按钮后试图显示消息。 Eclipse 中出现的错误是来自发送按钮的操作 Controller addMessage 方法的空指针异常。你能告诉我我的代码有什么问题吗?我已经为此工作了 3 天,并尝试应用网上的不同解决方案,但似乎无法修复它。我尽快需要这个,所以我将其发布在这里寻求帮助。这是我的代码:

XHTML 页面:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets">

    <h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Chat Room</title>
    </h:head>
    <h:body>

    <!-- Pao edited -->
                        <div class="title" align="center">Welcome to ACT Chat Room</div>

                        <!-- collective chat messages -->
                        <div id="chatMessageList">
                        <table align="center">

                            <tr>
                            <td valign="top">
                            <h:outputText value="#{chatPage.chatMessageList}" />
                            </td>
                            </tr>

                        </table>
                        </div>

                    <!-- chat message -->
                    <div id="chatMessage">
                    <h:form>
                        <table align="center">
                            <tr>
                                <td>Enter Message:</td>
                                <td><h:inputTextarea value="#{chatPage.message}" rows="3" cols="75"/></td>
                                <td><h:commandButton value="Send" action="#{chatPage.addMessage()}" /></td>
                            </tr>
                        </table>
                         </h:form>
                    </div>

    <!-- End editing here -->

    </h:body>
    </html>

聊天页面类:

    @ManagedBean
    @SessionScoped
    public class ChatPage {
        private String username;
        private String message;
        private String creationTime;
        private String id;
        private List<ChatMessage> chatMessageList;
        private ChatMessage chatMessage;

        public ChatPage(){
        }

        (getters and setters)

/将chatPage.message放入chatMessage.message并将其添加到chatMessageList的方法/

        public void addMessage(){
        ChatMessage chatMessage = new ChatMessage();
        chatMessage.setMessage(message);
        this.chatMessageList.add(chatMessage);
        }
    }

ChatMessage 类:

    public class ChatMessage {
        private int id;
        private String message;
        private String creationTime;

        (getters and setters)
    }

这是我收到的错误:

    java.lang.NullPointerException
        actportal.view.chat.ChatPage.addMessage(ChatPage.java:65)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        java.lang.reflect.Method.invoke(Unknown Source)
        org.apache.el.parser.AstValue.invoke(AstValue.java:278)
        org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)

将不胜感激任何帮助。预先感谢!

最佳答案

您似乎没有为 chatMessageList 变量分配任何内容,因此当尝试向其添加 ChatMessage 时,会发生 NullPointerException 。要解决此问题,请将以下行添加到 ChatPage 构造函数中:

chatMessageList = new ArrayList<ChatMessage>();

您需要导入java.util.ArrayList

关于java - 如何从 ChatMessage 类的列表中显示 String 消息属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754925/

相关文章:

java - 从 Mule 中的虚拟机队列发布到 REST 端点

Java在/root文件夹中创建日志文件java0.log和锁定文件

Web View 中的 java.lang.IllegalArgumentException

Jsf 2,在数据表中显示验证消息

java - Netbeans JSF 应用程序中从未到达 javascript 文件中的断点?

java - 为什么我不能将 2 个 EJB 注入(inject)到 2 个相互注入(inject)的不同托管 bean 中?

jakarta-ee - JAX-RS 2 过滤器有哪些范围?

java - 如何在 ScrollView 中将按钮(小部件)保留在屏幕中?

java - 复制整个Object,java中没有实现clone?

java - 远程 servlet 之间的通信