簡體   English   中英

JHipster 中的復選框

[英]Checkbox in JHipster

我在 html 中有一個復選框

<input type="checkbox" class="form-control" name="myflag" [(ngModel)]="myEntity.myflag" id="field_myflag">

DB 上的字段 (myflag) 有 2 個可能的值 [OK, KO],這兩個值在枚舉中定義:

@Enumerated(EnumType.STRING)
@Column(name = "MYFLAG")
private MYFLAGENUM myflag;

所以:

public enum MYFLAGENUM {
   OK, KO
}

每次嘗試保存時,都會遇到異常:

警告 888 --- [XNIO-7 task-5] .mmaExceptionHandlerExceptionResolver:由處理程序執行引起的已解決異常:org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析錯誤:無法反序列化myproject.hipster.testing.domain.enumeration.MYFLAGENUM實例myproject.hipster.testing.domain.enumeration.MYFLAGENUM超出 VALUE_FALSE 令牌; 嵌套異常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:無法從 VALUE_FALSE 令牌中反序列化myproject.hipster.testing.domain.enumeration.MYFLAGENUM實例 [Source: (PushbackInputStream); 行:1,列:37](通過參考鏈:myproject.hipster.testing.domain.MYENTITY["myflag"])

似乎 VALUE_FALSE(或 VALUE_TRUE)無法轉換為“KO”(或“OK”)。 所以我創建了一個轉換器,但我看到它沒有被調用。 如何使用 JHipster 復選框管理我自己的“布爾值”值?

嘗試

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

通過這種方式,您告訴框架使用特殊策略將輸入值轉換為枚舉值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM