2012-04-14 3 views
0

JSF에 inputText 객체가 있는데,이 객체는 inputText_A라고하고, 값은 세션 Bean 객체의 멤버 변수에 바인드됩니다. 그것은 두 가지 유형입니다.세션 빈에서 JSF inputText로 값을 전달하는 방법은 무엇입니까?

<h:inputText value="#{theBean.theMemberVar}" /> 

그리고이 inputText_A는 0.0으로 초기화되었습니다. theBean이 계산을 수행 할 때 값은 Bean.theMemberVar로 다시 업데이트됩니다. 디버그 콘솔에서 다시 추적하고 값이 예상 값으로 업데이트되었습니다. 그러나 화면의 inputText_A는 여전히 원래 값 0.0을 보여줍니다.

outputText를 사용하여 테스트했는데 예상되는 출력이 거기에 표시되지만 그 후에는 화면에서 읽기만됩니다. 예상 된 출력이 inputText_A에 채워진 후 편집 가능하도록 입력 텍스트를 선택합니다.

JSF에서 Bean으로 값을 전달할 때 inputText를 사용하고 Bean에서 JSF로 일부 값이 전달되면 outputText를 사용한다는 것을 알고 있습니다. 하지만 이제 inputText를 사용하여 Bean의 값을 JSF로 전달하려고합니다. 이 일을 할 수 있는지 알 수 있습니까?

답변

2

h:inputText을 통해 업데이트 된 값을 표시하는 것이 좋습니다 (이러한 기능이 필요한 경우). 빈 변수에 대해 gettersetter을 적절하게 설정하면됩니다. 그래서 예를 들면

:

private String text; 

// here you will update the input text - in your case method which does calculations 
    public void changeText(){ 
     ... 
     text = "updated"; 
    } 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

그리고 당신의 facelet (.xhtml) :

 <h:inputText value="#{dummyBean.text}" /> 
     <h:commandButton value="Change text" actionListener="#{dummyBean.changeText}" /> 

귀하의 inputText는 버튼 클릭에 업데이트됩니다.

다른 것은 Ajax를 통해 콘텐츠를 업데이트하는 경우입니다. 그럼 당신은 inputTextparent component 또는 inputTextform을 다시 렌더링해야합니다

<h:commandButton immediate="true" value="Change text"> 
     <f:ajax event="click" render=":formID" listener="#{dummyBean.changeText}"/> 
    </h:commandButton> 
관련 문제