Получить тип значения Enum из модели, работающей DropDownChoice и SelectOption - PullRequest
0 голосов
/ 27 июня 2019

Я не могу получить значение типа Enum для DropDownChoice, связанного с классом SelectOption [], я вижу, что объект имеет ожидаемое значение, но я не знаю, как его получить в моей модели.

Изначально DropDownChoice работал со значениями, определенными в модели, и работает хорошо, но мне нужно показать детали каждого значения, там я застрял

@Entity
public class Asegurado extends EntityBase {
@Enumerated(EnumType.STRING)
private Genero genero = Genero.M;

public static enum Genero {
    M, F, D
}

public Genero getGenero() {
    return genero;
}

public void setGenero(Genero genero) {
    this.genero = genero;
}

}

Опция выбора:

public class SelectOption implements Serializable{
private static final long serialVersionUID = 1L;
private Enum<?> name;
private String value;

public SelectOption(Enum<?> name, String value) {
    this.name = name;
    this.value = value;
}   

public Enum<?> getName() {
    return name;
}

public void setName(Enum<?> name) {
    this.name = name;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

public static long getSerialversionuid() {
    return serialVersionUID;
}

}

В компоненте приложения:

SelectOption[] options = new SelectOption[] {
    new SelectOption(Genero.M, "Masculino"), 
    new SelectOption(Genero.F, "Femenino"),
    new SelectOption(Genero.D, "Diferenciado")
    };
Asegurado wase = new Asegurado();
ChoiceRenderer<Enum> choiceRenderer = new ChoiceRenderer<Enum>("value", "name");
    final DropDownChoice<Asegurado.Genero> generoWk = new DropDownChoice(
            "genero",
            new Model<Asegurado.Genero>(Asegurado.Genero.D),
            Arrays.asList(options),
            choiceRenderer
            );

В onSubmit () проблема в:

asegurado.setGenero(generoWk.getModelObject()); 

Ошибка: «Не может быть сотворено»

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 27 июня 2019

Когда я запускаю Debug, я понимаю, что DropDownChoice загружается правильно:

generoWK=DropDownChoice<T>
data=Model<T>
Object=Asegurado$Genero
name="D"

Когда я выполняю onSubmit (), он изменяется:

val$generoWK=DropDownChoice<T>
data=Model<T>
Object=SelectOptions
name=Asegurado$Genero
name="D"

Что-то вызывает изменение переменной, я не знаю что, но мне интересно получить значение name = "D" в качестве типа enum

...