ere*_*can 9 jsf spring primefaces
我需要将Spring bean注入JSF(Primefaces)转换器.我尝试使用EL解析器注入豆子.但是,豆子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
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
EL解析器:
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
Run Code Online (Sandbox Code Playgroud)
当我调试我的代码时,departmentService属性是null.我可以以相同的方式访问托管JSF bean中的Spring bean.
Bal*_*usC 20
直到JSF 2.3,转换器都没有注入目标.将转换器改为JSF或Spring托管bean.以下示例使其成为JSF托管bean:
@ManagedBean
@RequestScoped
public class DepartmentConverter implements Converter {
// ...
}
Run Code Online (Sandbox Code Playgroud)
而#{departmentConverter}不是使用它DepartmentConverter.
例如
<h:inputSome ... converter="#{departmentConverter}" />
Run Code Online (Sandbox Code Playgroud)
要么
<h:someComponent>
<f:converter binding="#{departmentConverter}" />
</h:someComponent>
Run Code Online (Sandbox Code Playgroud)
不要忘记删除<converter>from faces-config.xml(如果您使用了@FacesConverter注释,那么它本身已经没有必要了,但除此之外).
| 归档时间: |
|
| 查看次数: |
8012 次 |
| 最近记录: |