2017-01-30 8 views
0

사용자 지정 명명 전략을 변환하지 사용자 지정 명명 전략을 사용할 때 이름이 올바르게 변환되지 않습니다. '비 HAL'필드 만 변환됩니다.Halarious 포함 된 리소스 필드 이름 내가 HAL-사양 프레임 워크를 사용하고

질문 : 정규 명명 된 필드뿐만 아니라 포함 리소스에도 사용자 지정 명명 규칙을 적용 할 수있는 방법이 있습니까?

i를 AllLowercaseFieldNamingStrategy 구현은 단순히 필드 이름을 변환

GsonBuilder builder = new GsonBuilder(); 
builder.setFieldNamingStrategy(new AllLowercaseFieldNamingStrategy()); 
builder.registerTypeAdapter(HalResource.class, new HalSerializer()); 
builder.setExclusionStrategies(new HalExclusionStrategy()); 
Gson gson = builder.create(); 
try (OutputStreamWriter writer = new OutputStreamWriter(entityStream)) { 
    writer.write(gson.toJson(resource, HalResource.class)); 
} 

사용자 정의 MessageBodyWriter에서 다음 GSON 구성은 ... 예를 들어 너무 @Override public String translateName(Field f) { return f.getName().toLowerCase(); }

처럼 소문자로 있습니다

public class MyResource implements HalResource { 
    private final String myField; 
    private final MyResource myEmbeddedResource; 
    ... 
} 

이 필드 이름이 일치하지 않습니다 (이름 지정 전략에 따라 모두 소문자 여야 함) ...

답변

0

제 해결 방법은 @HalEmbedded 주석을 사용하고 소문자 이름을 직접 할당하는 것입니다. https://github.com/surech/halarious/issues/21

:

public class MyResource implements HalResource { 
    private final String myField; 
    @HalEmbedded(name = "myembeddedresource") 
    private final MyResource myEmbeddedResource; 
    ... 
} 

문제로이 프로젝트를 위해 만들어졌습니다