2017-01-02 10 views
0

У меня очень простой класс (документ), , где я храню данные в моей базе данных mongodb.Spring - mongodb - GeoJsonPoint

public class Data { 

    @Id 
    public String id; 

    public String userId; 

    public GeoJsonPoint coordinate; 

    public Data() { 
    } 

    public Data(String userId, GeoJsonPoint coordinate) { 
     this.userId = userId; 
     this.coordinate = coordinate; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public GeoJsonPoint getCoordinate() { 
     return coordinate; 
    } 

    public void setCoordinate(GeoJsonPoint coordinate) { 
     this.coordinate = coordinate; 
    } 
} 

Далее у меня есть этот метод контроллера для сохранения новых данных:

@PostMapping(value = "/data") 
public RestResponse add(@RequestBody Data data) { 
    mongoTemplate.save(data); 

    List<Data> list = new ArrayList<Data>(); 
    list.add(data); 

    RestResponse<Data> restResponse = new RestResponse<Data>(true, list.size(), list); 

    return restResponse; 
} 

Так что, когда я отправить этот запрос с помощью Почтальон (окна -> стельку):

{ 
    "userId": "anyuserid-100", 
} 

получает данные сохраняются надлежащим образом, поскольку ответ:

{ 
    "success": true, 
    "count": 1, 
    "data": [ 
    { 
     "id": "586aaa00ba076b129254e2f5", 
     "userId": "anyuserid-100", 
     "coordinate": null, 
    } 
    ] 
} 

Но когда я хочу сохранить координаты, а также:

{ 
    "userId": "anyuserid-200", 
    "coordinate": { 
     "type": "Point", 
     "coordinates": [-2.5469, 48.5917] 
    } 
} 

Response является:

the request sent by the client was syntactically incorrect. 

Но почему? я точно перенаправлен на http://docs.spring.io/spring-data/data-mongo/docs/1.9.6.RELEASE/reference/pdf/spring-data-mongodb-reference.pdf

Любой может помочь?

спасибо и приветствуем!

UPDATE:

конфигурации:

@Configuration 
@ComponentScan(basePackages = "com.example.app") 
@PropertySource({ "classpath:app.properties" }) 
@Import(MongoConfig.class) 
@EnableWebMvc 
public class AppConfig extends WebMvcConfigurerAdapter { 

    @Autowired 
    private Environment env; 

    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/backend/views/"); 
     viewResolver.setSuffix(".jsp"); 

     return viewResolver; 
    } 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean 
    public GeoJsonModule geoJsonModule(){ 
     return new GeoJsonModule(); 
    } 

} 

ответ

0

Зарегистрируйте GeoJsonModule с Джексоном объекта картографа. Этот класс упакован в зависимости от Spring Mongo Db.

Добавьте этот компонент в свою конфигурацию.

@Override 
    public void configureMessageConverters(
      List<HttpMessageConverter<?>> converters) { 
     Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); 
     builder.modulesToInstall(GeoJsonModule.class); 
     converters.add(new MappingJackson2HttpMessageConverter(builder.build())); 
    } 
+0

Не могли бы вы рассказать мне, что вы имеете в виду в деталях? Я читаю документы, но я не уверен, что вы имеете в виду. –

+0

Вы используете Джексон для десерализации/серлизации? Добавьте свою конфигурацию пружины в сообщение. Вам необходимо будет зарегистрировать этот модуль. Это для фронтального контроллера. Я не думаю, что вы найдете это mongo db docs. – Veeram

+0

i обновленный код, можете ли вы обратиться к нему? –

Смежные вопросы