jsf - 如何使用 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)}" />
欢迎任何建议。谢谢你。
解决方案
这在 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)}" />
也可以看看:
推荐阅读
- wordpress - 当我使用 npx 命令时出现此错误错误:EPERM:不允许操作,
- image - 如何使用干预图像 laravel 将 webp 图像转换为 jpeg 或 png
- c# - 无法编辑 DotNetNuke 源文件
- javascript - 在 Android Chrome 上重新加载页面时出现黑色覆盖
- javascript - 如何读取 html 文件中的文本文件并使用 php 将内容复制到变量中
- android - 动态壁纸在不同位置缩放位图数百次
- javascript - HTML 代码显示为 Gutenberg Block 以 JavaScript 呈现
- angular - Angular - 类型“HTMLOptionElement”上不存在属性“选项”
- logic - 时间逻辑(例如 LTL)存储库
- python-3.x - XPATH 部分匹配 tr id 与 Python、Selenium、