Java Faces配置中的类参数
有没有办法将类作为类对象传递到属性中 i、 eJava Faces配置中的类参数,java,class,jsf,faces-config,Java,Class,Jsf,Faces Config,有没有办法将类作为类对象传递到属性中 i、 e 克拉兹 java.lang.Double.class 是。但它将被实现为字符串。您可以使用Class.forName(clazz) 您可以尝试使用java.lang.Class,但我不确定是否有内置的转换器。但它将被实现为字符串。您可以使用Class.forName(clazz) 您可以尝试使用java.lang.Class,但我不确定是否有内置的转换器不,没有办法。只有当所讨论的类具有(默认)no-arg构造函数时,才可能这样做。java.la
克拉兹
java.lang.Double.class
是。但它将被实现为字符串。您可以使用Class.forName(clazz)
您可以尝试使用
java.lang.Class
,但我不确定是否有内置的转换器。但它将被实现为字符串。您可以使用Class.forName(clazz)
您可以尝试使用
java.lang.Class
,但我不确定是否有内置的转换器不,没有办法。只有当所讨论的类具有(默认)no-arg构造函数时,才可能这样做。java.lang.Double
没有。此外,理论上你的构造是无效的。如果在定义java.lang.Double
的位置使用一个(默认)无arg构造函数的类,那么下面的方法就可以工作了:
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>mypackage.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>clazz</property-name>
<property-class>java.lang.Class</property-class>
<value>#{clazz.class}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>clazz</managed-bean-name>
<managed-bean-class>java.lang.Double</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
结合
public class Bean {
private Class<?> clazz;
public Class<?> getClazz() {
return clazz;
}
public void setClazz(Class<?> clazz) {
this.clazz = clazz;
}
}
public class Bean {
private Class<?> clazz;
public Class<?> getClazz() {
return clazz;
}
public void setClassName(String name) {
try {
this.clazz = Class.forName(name);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Illegal class name.", e);
}
}
}
公共类Bean{
私人课堂;
公共类getClazz(){
回击声;
}
public void setClassName(字符串名称){
试一试{
this.clazz=Class.forName(name);
}catch(classnotfounde异常){
抛出新的IllegalArgumentException(“非法类名”,e);
}
}
}
不,没有办法。只有当所讨论的类具有(默认)no-arg构造函数时,才可能这样做。java.lang.Double
没有。此外,理论上你的构造是无效的。如果在定义java.lang.Double
的位置使用一个(默认)无arg构造函数的类,那么下面的方法就可以工作了:
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>mypackage.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>clazz</property-name>
<property-class>java.lang.Class</property-class>
<value>#{clazz.class}</value>
</managed-property>
</managed-bean>
<managed-bean>
<managed-bean-name>clazz</managed-bean-name>
<managed-bean-class>java.lang.Double</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
结合
public class Bean {
private Class<?> clazz;
public Class<?> getClazz() {
return clazz;
}
public void setClazz(Class<?> clazz) {
this.clazz = clazz;
}
}
public class Bean {
private Class<?> clazz;
public Class<?> getClazz() {
return clazz;
}
public void setClassName(String name) {
try {
this.clazz = Class.forName(name);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Illegal class name.", e);
}
}
}
公共类Bean{
私人课堂;
公共类getClazz(){
回击声;
}
public void setClassName(字符串名称){
试一试{
this.clazz=Class.forName(name);
}catch(classnotfounde异常){
抛出新的IllegalArgumentException(“非法类名”,e);
}
}
}
@DD我觉得你在下一票按钮上有点草率。这是有效的,因为没有看到你的豆子本身,我不能再说了。抱歉,我应该在我的原始帖子中说得更清楚。将进行编辑以使其更清晰。@DD我认为您在下一票按钮上有点匆忙。这是有效的,因为没有看到你的豆子本身,我不能再说了。抱歉,我应该在我的原始帖子中说得更清楚。将进行编辑以使其更清晰。