저는 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는 입력 된 값으로 채워지지 않습니다.
내가 뭘 잘못하고 있니?
감사합니다.