0

私のプロジェクトでは、Hibernate、Spring、および JSF (Primefaces) を使用しています。単純な POJO (エンティティ) でピックリストを作成したい。これが私が作成したものです:

<p:pickList id="pickList" converter="#{groupConverter}" value="#{adminUsersMB.groups}" var="group"   
                        itemLabel="#{group.name}" itemValue="#{group}" >

                        <f:facet name="sourceCaption">Available groups</f:facet>  
                        <f:facet name="targetCaption">Users groups</f:facet> 

 </p:pickList>

私のコンバーターは次のとおりです。

@RequestScoped
@FacesConverter(forClass=Group.class, value="groupConverter")
public class GroupConverter implements Converter {

    @ManagedProperty(name="groupService", value="#{groupService}")
    @Getter @Setter
    GroupService groupService;

    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        try {
            return groupService.getGroupByName(Integer.parseInt(arg2));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return ((Group) arg2).getId().toString();
    }

}

もちろん、カスタム コンバーターを Faces 構成に追加しました。

<converter>
        <converter-id>groupConverter</converter-id>
        <converter-class>pl.proedims.users.component.GroupConverter</converter-class>
</converter>

しかし、フォームをコミットすると、例外が発生しました:

> SEVERE: javax.el.PropertyNotFoundException: /admin/user.xhtml @73,66
> itemLabel="#{group.name}": Property 'name' not found on type java.lang.String
4

1 に答える 1

1

問題が解決しました。必要なのは次のように入力することだけでした:

@Component("groupConverter")
public class GroupConverter implements Converter {

    @Autowired
    GroupService groupService;
    (...)
于 2012-10-15T14:23:27.413 に答える