Mat*_*zyk 10 jsf dependency-injection converter jsf-2 managed-bean
我试图通过以下方式在FacesConverted中注入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, UIComponent arg1, Object group) {
return ((Group) group).getName();
}
public GroupService getGroupService() {
return groupService;
}
public void setGroupService(GroupService groupService) {
this.groupService = groupService;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是没有注入groupService,我得到一个NullPointerEx.它不应该自动自动装配,因为它也是ManagedBean吗?当我将"getAsObject"更改为"return new Group();"时,这一切都有效.明显.
有任何想法吗?
McD*_*ell 27
您可能没有解析托管bean名称.
@ManagedBean(name = "myConverter")
@RequestScoped
@FacesConverter(value = "myConverter")
public class MyConverter implements Converter {
Run Code Online (Sandbox Code Playgroud)
例如,考虑以下两个组件:
<h:inputText converter="myConverter" value="#{foo.prop}" />
<h:inputText converter="#{myConverter}" value="#{bar.prop}" />
Run Code Online (Sandbox Code Playgroud)
当转换器设置在第一个组件上时,它将由Application.createConverter创建.转换器不是托管bean.如果按类型匹配转换器,则适用相同的规则.
在第二个组件中,值表达式用于返回实现Converter的类.这使用通常的托管bean机制.在这种情况下,@FacesConverter
注释是无关紧要的.
归档时间: |
|
查看次数: |
8518 次 |
最近记录: |