1

コンバーターで問題に直面しています。私の xhtml ファイルには、オブジェクトのリストを含む selectOneMenu があり、managedBean にオブジェクトを設定したいと考えています。

マネージド Bean に @SessionScoped がある場合、マネージド Bean のオブジェクトは満たされますが、マネージド Bean に @ViewScoped がある場合、コンバーターは使用されず、オブジェクトは null です。

この問題を解決するには?

Xhtml :

<p:selectOneMenu value="#{rechercheBean.role}" converter="#{typConverter}">
    <f:selectItems id="item" value="#{typBean.roles}" var="r" itemLabel="#{r.valeur}" itemValue="#{r}" />
</p:selectOneMenu>

typConverter :

public class TypConverter implements Converter{
    @EJB
    private TypFacadeLocal  TypBean;

    public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
        if (submittedValue.trim().equals("")) {
            return null;
        }
        else {
            try {
                Integer id = Integer.parseInt(submittedValue);
                Typ typ = new Typ();
                typ = TypBean.find(id);
                return typ;
            }
            catch (NumberFormatException exception) {
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Typ non valide"));
            }
        }
    }

    public String getAsString(FacesContext facesContext, UIComponent component, Object value) {
        if (value == null || value.equals("")) {
            return "";
        }
        else {
            return String.valueOf(((Typ) value).getId());
        }
    }
}

たくさん送信

4

1 に答える 1

-1

問題はコンポーネント c:when です。コンポーネントの属性レンダラーでは問題ありません。

于 2012-09-19T15:22:28.317 に答える