gpt4 book ai didi

spring - 如何将 Spring bean 注入(inject) JSF 转换器

转载 作者:行者123 更新时间:2023-12-03 18:07:29 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to inject @EJB, @PersistenceContext, @Inject, @Autowired, etc in @FacesConverter?

(5 个回答)


7年前关闭。




我需要将 Spring bean 注入(inject) JSF(Primefaces)转换器。我尝试使用 EL 解析器注入(inject) bean。然而, bean 是null转换器内部。

我的 JSF 转换器:

public class DepartmentConverter implements Converter  {
private DepartmentService departmentService;
//getter setter for this property

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
//codes
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
//Codes
}
}
faces-config.xml :
<converter>
<converter-id>DepartmentConverter</converter-id>
<converter-class>com.studinfo.jsf.converter.DepartmentConverter</converter-class>
<property>
<property-name>departmentService</property-name>
<property-class>com.studinfo.services.DepartmentService</property-class>
<default-value>#{DepartmentService}</default-value>
</property>
</converter>

EL解析器:
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>

当我调试我的代码时, departmentService属性是 null .我可以以同样的方式访问托管 JSF bean 中的 Spring bean。

最佳答案

在 JSF 2.3 之前,转换器不是注入(inject)目标。将转换器改为 JSF 或 Spring 托管 bean。下面的示例使其成为 JSF 托管 bean:

@ManagedBean
@RequestScoped
public class DepartmentConverter implements Converter {
// ...
}

并将其用作 #{departmentConverter}而不是 DepartmentConverter .

例如。
<h:inputSome ... converter="#{departmentConverter}" />

或者
<h:someComponent>
<f:converter binding="#{departmentConverter}" />
</h:someComponent>

不要忘记删除 <converter>来自 faces-config.xml (如果您使用了 @FacesConverter 注释,这本身就已经没有必要了,但除此之外)。

关于spring - 如何将 Spring bean 注入(inject) JSF 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10229396/

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