【问题标题】:Mapping key and values, adding message in Java映射键和值,在 Java 中添加消息
【发布时间】:2016-12-09 10:21:17
【问题描述】:

我有一个关于映射、映射键和映射值的问题。

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

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

// 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:/";
}

【问题讨论】:

  • 请在您的问题中更加具体,解释问题所在,实际行为,突出显示不起作用的代码部分。
  • 并尽量使用英文,包括命名方法、变量、类。这里不是每个人都懂法语。
  • 我做到了,你是对的@AdrianBer
  • 你得到了答案:)

标签: java dictionary key chat


【解决方案1】:

首先:

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

每次都抛出 NullPointerException。所以要么这是你得到的错误,要么是不是你的代码。

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

Message mes = new Message();

【讨论】:

    【解决方案2】:

    而不是这样做

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

    你可能想做

    if(!resultat.contains(monSalon)) {
    

    while之前做。

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多