Java 转换器类getAsObject将参数传递给接受对象的服务类
我对转换器类Java 转换器类getAsObject将参数传递给接受对象的服务类,java,jsf,jsf-2,converter,Java,Jsf,Jsf 2,Converter,我对转换器类getaObject方法有疑问 我有一个名为EmployeeService EmployeeService public List<Employees> getEmployees(Employees employees); 使用以下转换器,将数字(根据您的代码为字符串)简单转换为员工对象: @Named("employeeConverter") public class EmployeeConverter implements Converter { @Inj
getaObject
方法有疑问
我有一个名为EmployeeService EmployeeService
public List<Employees> getEmployees(Employees employees);
使用以下转换器,将数字(根据您的代码为
字符串
)简单转换为员工
对象:
@Named("employeeConverter")
public class EmployeeConverter implements Converter {
@Inject
private EmployeeService employeeService;
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value == null || value.equals("")) {
return null;
}
Employee employee = employeeService.getEmployeeByNumber(value);//or if it is not a String, replace value with Integer.parseInt(value)
if(employee == null) {
throw new ConverterException(new FacesMessage("Employee with number: " + value + " not found."));
}
return employee;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Employee) || (value == null)) {
return null;
}
return ((Employee)value).getEmployeeNumber();
}
}
并通过
converter=“#{employeeConverter}”
在视图中使用它。任务不清楚。什么是Employees
类、打字错误或带有列表的类?您在转换什么:员工
基于id
,部门
,List@skuntsel我的帖子有一个拼写错误,我已经改正了。我想根据employeeNumber获取员工。那么什么是员工
类?我的回答能解决您的问题吗?如果没有,请更明确地指定您的要求。正如我所提到的,方法参数的类型为Employees'
getEmployees(Employees-Employees)”,因此我必须传递Employees对象,而不是strings,但只提供使用签名公共对象getAsObject的方法(FacesContext上下文,UIComponent组件,字符串值);
。该值是一个字符串
对象。对此无需做任何处理。然后通过服务类实例将此字符串转换为对象,如回答中所示。可能您需要另一个接受该字符串的服务(已从字符串转换)对象转换为其他对象?@Polppan您想传递一个员工
对象,但您不能。正如skuntsel所说,您只能在getAsObject
函数中发送一个字符串
,该函数包含访问员工
信息的信息。
@Entity
public class Employees implements Serializable {
private String employeeNumber;
private String employeeName;
@Named("employeeConverter")
public class EmployeeConverter implements Converter {
@Inject
private EmployeeService employeeService;
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if(value == null || value.equals("")) {
return null;
}
Employee employee = employeeService.getEmployeeByNumber(value);//or if it is not a String, replace value with Integer.parseInt(value)
if(employee == null) {
throw new ConverterException(new FacesMessage("Employee with number: " + value + " not found."));
}
return employee;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Employee) || (value == null)) {
return null;
}
return ((Employee)value).getEmployeeNumber();
}
}