复选框在JHipster

问题描述 投票:2回答:1

我在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任务5] .m.m.a.ExceptionHandlerExceptionResolver:由处理器执行解决异常:org.springframework.http.converter.HttpMessageNotReadableException:JSON解析错误:无法反序列化myproject.hipster.testing.domain.enumeration.MYFLAGENUM的情况下进行VALUE_FALSE令牌;嵌套异常是com.fasterxml.jackson.databind.exc.MismatchedInputException:在[来源无法反序列化myproject.hipster.testing.domain.enumeration.MYFLAGENUM的实例出来VALUE_FALSE令牌:(PushbackInputStream); ](通过参考链:myproject.hipster.testing.domain.MYENTITY [ “myflag”])37:行:1,列

这似乎VALUE_FALSE(或VALUE_TRUE)不能转换为“KO”(或“OK”)。所以,我创建了一个转换器,但我认为这不叫。如何管理与JHipster复选框我自己的“布尔”值?

java angular checkbox jhipster
1个回答
2
投票

尝试

...
@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");
}
}

这样,您就告诉框架使用特殊的策略来输入值转换为枚举值。

© www.soinside.com 2019 - 2024. All rights reserved.