2010-05-27 3 views
1

저는 JSF 2를 배우고 간단한 사용자 정의 컴포넌트를 가지고 놀고 있습니다. 이 개 InputText]를 필드로 아약스를 사용할 사용자 지정 구성 요소를 상상해jsf 2.0 복합 컴포넌트 - 외부 bean/속성 수정 방법

... 
<h:body> 
    <composite:interface> 
    <composite:attribute name="domId" required="true" /> 
    <composite:attribute name="value" required="true" /> 
    </composite:interface> 
    <composite:implementation> 
    <h:inputText id="code" value="#{cc.attrs.value}"> 
    <f:valueChangeListener binding="#{domBean}" >  
    </f:valueChangeListener> 
     <f:ajax event="valueChange" execute="@this" 
     render="name"/> 
    </h:inputText> 

     <h:inputText id="name" value="#{domBean.name}" disabled="true"> 
    </h:inputText> 
    </composite:implementation> 
... 

페이지를은 다음과 같은 구성 요소가 보인다 사용과 :

... 
<h:body> 
    <h:form> 
    <dom:domain domId="100" value="#{testCtrl.code}"/> 
    </h:form> 
</h:body> 
... 

domBean을 정의하는 클래스에서 재미있는 방법은 다음과 같습니다

public void processValueChange(ValueChangeEvent event) 
     throws AbortProcessingException 
    { 
    String code = (String) event.getNewValue(); 
    UIInput input= (UIInput) event.getSource(); 
    name = resolveCode(code); //some magic transformation 
    if (name != null) 
     input.setValue(code); //just want to set the "entered"/"validated" text 
    } 

내가 input.setValue (코드) 이연 표현 "# {cc.attrs 인 InputText]를 값을 설정할 것이라고 기대. value} "이며, 이는"부모 "페이지에서 # {testCtrl.code}에 연결됩니다. 불행히도 testCtrl.code는 입력 된 값으로 채워지지 않습니다.

내가 뭘 잘못하고 있니?

감사합니다.

답변

1

마지막으로, 몇 시간의 추적 후에 myfaces 2.0.0 구현의 버그임을 깨달았습니다. 최근 2.0.1 스냅 샷을 사용하여 작동합니다. https://issues.apache.org/jira/browse/MYFACES-2675

:

은 자세한 내용은 아파치 추적기 문제에서 참조하시기 바랍니다