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 回答