Невозможно автоматически преобразовать enum в JSF - PullRequest
0 голосов
/ 22 июня 2019

Согласно этому ответу: https://stackoverflow.com/a/8229982/988145, JSF должен автоматически преобразовать перечисления. По какой-то причине это не так. Я получаю следующую ошибку:

"Тип настройки ошибки типа частоты преобразования" DAY_OF_WEEK "для" нулевого преобразователя "."

Мое перечисление:

public enum FrequencyType implements Serializable
{
    DAY_NUMBER, DAY_OF_WEEK
}

Выберите разметку:

<h:selectOneMenu onchange="toggleFrequencyTypes(this);" 
         value="#{cellContentsBean.pillSheetProfile.frequency}" 
         class="form-control" id="frequencyTypeDd">
    <f:selectItems value="#{cellContentsBean.frequencyTypes}" />
</h:selectOneMenu>

Частотный тип геттера в бобе:

public FrequencyType[] getFrequencyTypes() {
    return FrequencyType.values();
}

сеттеры:

private FrequencyType frequencyType;

/**
 * @return the frequencyType
 */
public FrequencyType getFrequencyType()
{
    return frequencyType;
}

/**
 * @param frequencyType the frequencyType to set
 */
public void setFrequencyType(FrequencyType frequencyType)
{
    this.frequencyType = frequencyType;
}

Я даже добавил конвертер в конфигурацию лиц, как предлагает другой поток, но он ничего не сделал:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>

        <converter>
            <converter-for-class>java.lang.Enum</converter-for-class>
            <converter-class>javax.faces.convert.EnumConverter</converter-class>
        </converter>
    </application>
</faces-config>

1 Ответ

1 голос
/ 24 июня 2019

Хотя это, вероятно, не решит вашу проблему, я должен отметить, что ваш файл face-config.xml не работает:

  1. Пространства имен JSF, которые вы объявили, не существуют в этомway .
  2. Неправильное вложение элементов: converter элемент не является потомком элемента application.

Лучше попробуйте это:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>

    <converter>
        <converter-for-class>java.lang.Enum</converter-for-class>
        <converter-class>javax.faces.convert.EnumConverter</converter-class>
    </converter>
</faces-config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...