未将ManagedProperty注入@FacesConverter

问题描述

|| 我试图在我的Faces中注入ManagedBean转换为以下方式:
@ManagedBean
@RequestScoped
@FacesConverter(forClass = Group.class)
public class GroupConverter implements Converter {

@ManagedProperty(\"#{groupService}\")
private GroupService groupService;

@Override
public Group getAsObject(FacesContext context,UIComponent arg1,String groupName) {
    return groupService.findGroupByName(groupName);
}

@Override
public String getAsstring(FacesContext arg0,Object group) {
    return ((Group) group).getName();
}

public GroupService getGroupService() {
    return groupService;
}

public void setGroupService(GroupService groupService) {
    this.groupService = groupService;
}

}
问题是没有注入groupService,我得到了一个N​​ullPointerEx。由于它也是ManagedBean,是否应该自动自动接线?当我将\“ getAsObject \”更改为\“ return new Group(); \”时,所有这些工作正常。 有任何想法吗?     

解决方法

您很可能没有解析托管bean名称。
@ManagedBean(name = \"myConverter\")
@RequestScoped
@FacesConverter(value = \"myConverter\")
public class MyConverter implements Converter {
例如,请考虑以下两个组成部分:
        <h:inputText converter=\"myConverter\" value=\"#{foo.prop}\" />
        <h:inputText converter=\"#{myConverter}\" value=\"#{bar.prop}\" />
在第一个组件上设置转换器后,它将由Application.createConverter创建。转换器不是托管bean。如果按类型匹配转换器,则适用相同的规则。 在第二个组件中,值表达式用于返回实现Converter的类。这使用通常的托管bean机制。在这种情况下,“ 3”注释不相关。