Я переношу свой проект с seam 2 на JSF 2.x.
В шве 2 для перечислений у нас есть
<s:convertEnum />
который вызовет преобразователь, когда будет выбрано правильное значение, а не значение noSelectionOption.
В JSF 2.x я создал свой собственный конвертер, например
@Named("enumConverter")
@ApplicationScoped
public class EnumConverter implements Converter {
public Object getAsObject(FacesContext context, UIComponent component, String key)
throws ConverterException {
if(!key.equalsIgnoreCase("-- Choose one --")){
// DO LOGIC
}
return null;
}
public String getAsString(FacesContext context, UIComponent component, Object object) {
}
Теперь проблема, на мой взгляд, в том, что я использую конвертер, например
<h:selectOneMenu value="#{user.DocumentType}" required="true">
<f:selectItem itemLabel="-- Choose one --" itemValue="#{null}" noSelectionOption="true"/>
<f:selectItems value="${user.Constants(user.statuses)}"
var="Val" itemLabel="#{user.Display(Val)}"
/>
<f:converter converterId="enumConverter"></f:converter>
</h:selectOneMenu>
Здесь, если я выберу NoSelectionOption, мой преобразователь также будет вызываться, чего не должно происходить, и его следует вызывать только в том случае, если требуется правильное значение.
в случае преобразователя шва 2, только если выбрано правильное значение, тогда будет вызван только преобразователь, в противном случае отображается "требуется значение".
Пожалуйста, скажите мне, что мне здесь не хватает .... Цените и помогайте ...
заранее спасибо