Java Faces配置中的类参数

Java 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

有没有办法将类作为类对象传递到属性中

i、 e


克拉兹
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我认为您在下一票按钮上有点匆忙。这是有效的,因为没有看到你的豆子本身,我不能再说了。抱歉,我应该在我的原始帖子中说得更清楚。将进行编辑以使其更清晰。