2016-02-27 5 views
0

Я изучаю весну 4.2.4, написав код webapp. Идея состоит в том, чтобы вернуть json-файл с помощью контроллера. Я уже опубликовал свои вопросы до того, как пару дней назад и все еще не могу получить правильные предложения по моему делу. Я стараюсь, чтобы все предложения, предоставленные stackoverfolow, не помогли мне никому из предложений. Вот мой контроллер: .....Контроллер SpringMvc возвращает JSON, отображает ошибку: статус HTTP 406

@RequestMapping(value="/getmessages",method=RequestMethod.GET, produces="application/json") 
@ResponseBody 
public Map<String,Object> getMessage(Principal prinicipal){ 

    List<Message>message=null; 
    if(prinicipal==null){ 
     message=new ArrayList<Message>(); 

    } 
    else{ 
     String username=prinicipal.getName(); 
     message=usersService.getMessage(username); 
    } 

    Map<String,Object> data= new HashMap<String,Object>(); 
    data.put("message", message); 
    data.put("number", message.size()); 
    System.out.println("message has to be her\n"+message); 
    System.out.println("Number message has to be her is..."+message.size()); 
    return data; 
} 

содержание сообщения, которое должно быть извлечено из MySQL в propely отображается в консоли. Проблема заключается в преобразовании в JSON и возврате результата. Я пытаюсь изменить json Jack 1.9.x на jackson-quickxml-2.x, и он не работает. Вся другая возможная конфигурация сервлета также не работает для меня. Когда я добавляю jackson-quickxml-databind ...., он отображает диалоговое окно загрузки файла для имени файла «getmessages». для загрузки и сохранения ...

Я очень благодарен вам за помощь.

ответ

0

Наконец я решил эту проблему следующим образом: я изменил тип возвращаемого из МАП в строку и я преобразовал мою карту в строку в стороне моего CONTROLLER как:

  1. Преобразование моей карты в строку:

    ObjectMapper mapper = new ObjectMapper(); 
        String jsonFromMap = mapper.writeValueAsString(data); 
    
  2. Я также изменил мою зависимость, как:

    <dependency> 
        <groupId>com.fasterxml.jackson.core</groupId> 
        <artifactId>jackson-annotations</artifactId> 
        <version>2.2.3</version> 
        </dependency> 
    
    <dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>2.2.3</version> 
    </dependency> 
    <dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-core</artifactId> 
    <version>2.2.3</version> 
    

  3. Внутри @RequestMapping изменение

    produces=application/json 
    

    в

    produces=text/html 
    

Я думаю, что проблема с браузером не в состоянии понять приложение/JSON и возвращающегося карта ..... ....... Любые, как я делал то, что я хочу сделать, хотя я не знаю, как я это сделал!