首页 > 解决方案 > 如何使用 EL 将类作为方法参数传递

问题描述

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

MyBean.java:

public void createPersonType(Class className) {
    // Person factory code goes here
}

人.xhtml:

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

欢迎任何建议。谢谢你。

标签: jsfel

解决方案


这在 EL 中不受支持。

enum如果要强制执行类型安全,只需使用 an即可。

public interface Person {

    public enum Type {
        STUDENT, TEACHER, ETC;
    }

    public Type getType();
}
public void createPersonType(Person.Type personType) {
    // Person factory code goes here
}
<... actionListener="#{myBean.createPersonType('STUDENT')}" />

JSF 会自动将字符串转换为实际的枚举。

除了字符串,您还可以使用<f:importConstants>(或<o:importConstants>)。

<f:metadata>
    <f:importConstants type="com.example.Person.Type" var="PersonType" />
</f:metadata>
...
<... actionListener="#{myBean.createPersonType(PersonType.STUDENT)}" />

也可以看看:


推荐阅读