gpt4 book ai didi

jsf - ManagedProperty 未注入(inject) @FacesConverter

转载 作者:行者123 更新时间:2023-12-04 02:44:17 24 4
gpt4 key购买 nike

我正在尝试通过以下方式在我的 FacesConverted 中注入(inject)一个 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;
}

}

问题是 groupService 没有被注入(inject),我得到了一个 NullPointerEx。既然它也是一个 ManagedBean,它不应该自动 Autowiring 吗?当我将“getAsObject”更改为“return new Group();”时,这一切都有效明显地。

有任何想法吗?

最佳答案

您可能没有解决 managed bean name .

@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 .如果您 match a converter by type,则适用相同的规则。 .

在第二个组件中,一个值表达式用于返回一个实现 Converter 的类。 .这使用通常的托管 bean 机制。在这种情况下, @FacesConverter注释无关紧要。

关于jsf - ManagedProperty 未注入(inject) @FacesConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com