2010-03-18 4 views
0

클래스를 클래스 객체로 속성에 전달하는 방법이 있습니까?Faces Config의 클래스 매개 변수

<managed-property> 
     <property-name>clazz</property-name> 
     <value>java.lang.Double.class</value> 
    </managed-property> 

답변

1

아니, 아니이 있습니다위한 변환기가 확실하지 않다 방법. 문제의 클래스가 (디폴트의) 인수 없음의 생성자을 가지는 경우에만 가능합니다. java.lang.Double에는없는 문자가 있습니다. 또한 이론 상으로는 귀하의 구성이 유효하지 않습니다.

조합
<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; 
    } 
} 

과 : 당신은 (기본값)로 java.lang.Double이 definied되어있는 장소에서 인수 없음의 생성자를 클래스를 사용하지 않는 경우 다음은 일한 것 그것은 String으로 Class#forName()을 사용하여 java.lang.Class을 얻습니다. 조합

<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>className</property-name> 
     <value>java.lang.Double</value> 
    </managed-property> 
</managed-bean> 

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); 
     } 
    } 

} 
4

예. 그러나 그것은 String으로 실현 될 것입니다. 당신은 당신은 <property-class>java.lang.Class</property-class>를 사용하려고 할 수 있습니다 Class.forName(clazz)

를 사용하여, 필요할 때마다 여러분의 빈에 Class으로 바꿀 수 있지만, 나는이 내장

+0

그게 정말에 ... 난 당신이 downvote 버튼을 조금 성급한 생각 –

+0

@DD 클래스를 통과하지와 : 여기에 킥오프 예입니다. 이것은 작동하고 콩 자체를 보지 못했고 더 말할 수 없습니다. – Bozho

+0

죄송합니다. 나는 원래 게시물에서 더 분명해야했습니다. 더 명확하게 편집 할 것입니다. –