Пользовательский конвертер Ошибка в h: SelectOneMenu - PullRequest
0 голосов
/ 19 сентября 2011

У меня проблема с реализацией пользовательского конвертера ...

мой xhtml:

...
<span class="cien">
    <h:outputLabel value="Director de Area Correspondiente:" 
        styleClass="negritas" />
    <h:selectOneMenu value="#{ordenBO.director}" id="director-area" 
        converter="superiorAuditoriaConverter" 
        converterMessage="Error al seleccionar el Director">
        <f:selectItems value="#{ordenBO.directores}"></f:selectItems>
    </h:selectOneMenu>
    <p:message for="director-area"></p:message>
</span>    
...

вот как я заполняю свой ч: SelectOneMenu:

...
this.directores = new ArrayList<SelectItem>();
for (SuperiorAuditoriaDTO sup: daoSuperiorAuditoria.getDirectoresASM())
    this.directores.add(new SelectItem(sup, sup.getProfesion() + " " +
        sup.getNombre_completo()));
...

это мой пользовательский конвертер:

....
@FacesConverter(forClass = SuperiorAuditoriaDTO.class, value = 
    "superiorAuditoriaConverter")
public class SuperiorAuditoriaConverter implements Converter {

    private static SuperiorAuditoriaDAO dao = new SuperiorAuditoriaDAO();

public Object getAsObject(FacesContext arg0, UIComponent arg1, String id_persona) { 
    SuperiorAuditoriaDTO s = null;
    try {
        s = dao.getSuperiorASM(Integer.parseInt(id_persona));
    } catch(Exception e) {
        e.printStackTrace();
    }
    return s;
}

public String getAsString(FacesContext arg0, UIComponent arg1, Object auditor) {
    return String.valueOf(((SuperiorAuditoriaDTO) auditor).getId_persona());
}

}

Может кто-нибудь помочь мне ?? Я всегда получаю сообщение об ошибке, в котором говорится, что значение, которое я пытаюсь преобразовать, недопустимо ..

Я использую JSF 2 Моджарра ... у меня также есть метод equals и hashCode ...

спасибо ..

1 Ответ

0 голосов
/ 19 сентября 2011

Я всегда получаю сообщение об ошибке, в котором говорится, что значение, которое я пытаюсь преобразовать, недопустимо.

Таким образом, вы получили «Ошибка проверки: значение недействительно»? Это произойдет, если метод equals() для выбранного объекта не вернул true для любого из доступных элементов выбора. Другими словами, equals() метод SuperiorAuditoriaDTO не работает. Исправьте это соответственно.

Смотри также:

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