Флажок в JHipster - PullRequest
       5

Флажок в JHipster

0 голосов
/ 06 февраля 2019

У меня есть флажок в html

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

Поле (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].mmaExceptionHandlerExceptionResolver: Устраненное исключение, вызванное выполнением обработчика: 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 в [Source: (PushbackInputStream);строка: 1, столбец: 37] (через цепочку ссылок: myproject.hipster.testing.domain.MYENTITY ["myflag"])

Кажется, VALUE_FALSE (или VALUE_TRUE) не удалось преобразовать в 'КО (или «ОК»).Поэтому я создаю конвертер, но я вижу, что он не называется.Как я могу управлять своим собственным «логическим» значением с помощью флажка JHipster?

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте

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

Таким образом, вы указываете платформе использовать специальную стратегию для преобразования входного значения в значение перечисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...