映射键和值,在Java中添加消息

时间:2016-12-09 10:21:18

标签: java dictionary key chat

我对地图,地图键和地图值有疑问。

我正在写一个聊天程序:我有一个问题是添加消息。我无法添加消息。这使我进入一个带有错误的空网页(无法查看错误的数量和原因)

你能告诉我问题出在哪里吗?

// add a message to a chatroom
@RequestMapping(value="/addMessageSalon/{salon}/{pseudo}/{message}", method = {RequestMethod.GET, RequestMethod.POST})
public String addMessageSalon(HttpServletRequest request, @PathVariable("salon") String chatroom, @PathVariable("pseudo") String username, @PathVariable("message") String message) {

    Message mes = null;      
    mes.setMessage(message);      
    mes.setPseudo(username);

    GestionMessages addition = (GestionMessages)request.getSession().getServletContext().getAttribute("gestionMessages");

    Map<String, ArrayList<Message>> resultat = addition.getMessages();

    Iterator<Map.Entry<String, ArrayList<Message>>> entries = resultat.entrySet().iterator();        

    // iteration
    while(entries.hasNext()) {

        Map.Entry<String, ArrayList<Message>> entry = entries.next();

        if(!entries.hasNext() && !entry.getKey().contains(chatroom)) {

            // if chatroom does not exist, we give an error
            throw new IllegalArgumentException("Chatroom '" + chatroom + "' doesn't exist");        
        }

        if(entry.getKey().contains(chatroom)){     
            ControleurPrincipal.getUsersInDataBase().add(username);                 
            addition.getMessagesSalon(chatroom).add(mes);                
            break;                              
        }                 
    }

    resultat = addition.getMessages();
    return "redirect:/";
}

2 个答案:

答案 0 :(得分:0)

而不是这样做

if(!entries.hasNext() && !entry.getKey().contains(monSalon)) {
你可能想做

if(!resultat.contains(monSalon)) {

并在while之前执行。

答案 1 :(得分:0)

首先:

mapper

每次 会抛出NullPointerException。所以,无论是你得到的错误,还是你的代码。

如果这是您的实际代码,那么您需要首先实例化Message,如下所示:

Message mes = null;      
mes.setMessage(message);