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();
    }

}