JHipster 中的复选框
Checkbox in JHipster
我在 html
中有一个复选框
<input type="checkbox" class="form-control" name="myflag" [(ngModel)]="myEntity.myflag" id="field_myflag">
DB 上的字段 (myflag) 有 2 个可能的值 [OK, KO],这 2 个值在枚举中定义:
@Enumerated(EnumType.STRING)
@Column(name = "MYFLAG")
private MYFLAGENUM myflag;
所以:
public enum MYFLAGENUM {
OK, KO
}
每次尝试保存时,我都会遇到异常:
WARN 888 --- [ XNIO-7 task-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by handler execution: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of myproject.hipster.testing.domain.enumeration.MYFLAGENUM
out of VALUE_FALSE token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of myproject.hipster.testing.domain.enumeration.MYFLAGENUM
out of VALUE_FALSE token at [Source: (PushbackInputStream); line: 1, column: 37] (through reference chain: myproject.hipster.testing.domain.MYENTITY["myflag"])
似乎VALUE_FALSE(或VALUE_TRUE)无法转换为'KO'(或'OK')。所以我创建了一个转换器,但我看到它没有被调用。
如何使用 JHipster 复选框管理我自己的 "boolean" 值?
尝试
...
@JsonDeserialize(using = OkKoDeserializer.class)
private MYFLAGENUM myflag;
和:
public class OkKoDeserializer extends StdScalarDeserializer<MYFLAGENUM> {
public OkKoDeserializer() {
super(MYFLAGENUM.class);
}
@Override
public MYFLAGENUM deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
String value = p.getValueAsString();
if ("VALUE_FALSE".equalsIgnoreCase(value)) {
return MYFLAGENUM.KO;
}
if ("VALUE_TRUE".equalsIgnoreCase(value)) {
return MYFLAGENUM.OK;
}
throw new IllegalArgumentException("value " + value + " is not parseable to a MYFLAGENUM");
}
}
通过这种方式,您可以告诉框架使用特殊策略将输入值转换为枚举值。
我在 html
中有一个复选框<input type="checkbox" class="form-control" name="myflag" [(ngModel)]="myEntity.myflag" id="field_myflag">
DB 上的字段 (myflag) 有 2 个可能的值 [OK, KO],这 2 个值在枚举中定义:
@Enumerated(EnumType.STRING)
@Column(name = "MYFLAG")
private MYFLAGENUM myflag;
所以:
public enum MYFLAGENUM {
OK, KO
}
每次尝试保存时,我都会遇到异常:
WARN 888 --- [ XNIO-7 task-5] .m.m.a.ExceptionHandlerExceptionResolver : Resolved exception caused by handler execution: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of
myproject.hipster.testing.domain.enumeration.MYFLAGENUM
out of VALUE_FALSE token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance ofmyproject.hipster.testing.domain.enumeration.MYFLAGENUM
out of VALUE_FALSE token at [Source: (PushbackInputStream); line: 1, column: 37] (through reference chain: myproject.hipster.testing.domain.MYENTITY["myflag"])
似乎VALUE_FALSE(或VALUE_TRUE)无法转换为'KO'(或'OK')。所以我创建了一个转换器,但我看到它没有被调用。 如何使用 JHipster 复选框管理我自己的 "boolean" 值?
尝试
...
@JsonDeserialize(using = OkKoDeserializer.class)
private MYFLAGENUM myflag;
和:
public class OkKoDeserializer extends StdScalarDeserializer<MYFLAGENUM> {
public OkKoDeserializer() {
super(MYFLAGENUM.class);
}
@Override
public MYFLAGENUM deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
String value = p.getValueAsString();
if ("VALUE_FALSE".equalsIgnoreCase(value)) {
return MYFLAGENUM.KO;
}
if ("VALUE_TRUE".equalsIgnoreCase(value)) {
return MYFLAGENUM.OK;
}
throw new IllegalArgumentException("value " + value + " is not parseable to a MYFLAGENUM");
}
}
通过这种方式,您可以告诉框架使用特殊策略将输入值转换为枚举值。