Jsf 如何使用EL将类作为方法参数传递

Jsf 如何使用EL将类作为方法参数传递,jsf,el,Jsf,El,您好,我是jsf/el新手,我正在寻找一个解决方案,将类ex:Student.class作为方法参数传递给我在支持bean中定义的方法。顺便说一句,我使用字符串参数测试了相同的重载方法,没有任何问题,但是对于我的用例,我更喜欢类参数而不是字符串参数 MyBean.java: public void createPersonType(Class className) { // Person factory code goes here } person.xhtml: <... ac

您好,我是jsf/el新手,我正在寻找一个解决方案,将类ex:Student.class作为方法参数传递给我在支持bean中定义的方法。顺便说一句,我使用字符串参数测试了相同的重载方法,没有任何问题,但是对于我的用例,我更喜欢类参数而不是字符串参数

MyBean.java:

public void createPersonType(Class className) {
    // Person factory code goes here
}
person.xhtml:

<... actionListener="#{myBean.createPersonType(Student.class)}" />

欢迎提出任何建议。谢谢。

这在EL中不受支持

如果要强制执行类型安全,只需使用枚举即可

公共接口人员{ 公共枚举类型{ 学生、教师等; } 公共类型getType; } public void createPersonTypePerson.Type personType{ //这里有个人工厂代码 } JSF将自动将字符串转换为实际的枚举

也可以使用或代替字符串

... 另见:
您可以将整个类引用作为字符串传递给您的.package.Student。您的方法如下所示:

public void createPersonType(String className) {
    Class<?> class = Class.forName(className);
}

我认为埃尔不允许这样。为什么不创建像createStudent这样的重载方法呢。您的MenuItem已经是特定的了,为什么不让它调用特定的方法呢?问题是:顺便说一句,我使用字符串参数测试了相同的重载方法,没有任何问题,但是对于我的用例,我更喜欢类参数而不是字符串参数。哦,糟糕,我不知怎么错过了这一部分。