0

JSFにinputTextオブジェクト、たとえばinputText_Aがあり、その値はセッションBeanオブジェクトのメンバー変数にバインドされています。ダブルの一種です。

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

そして、このinputText_Aは0.0に初期化されています。Beanが計算を実行しているとき、値はBean.theMemberVarに更新されます。デバッグコンソールでトレースバックし、値が期待値に更新されました。ただし、画面のinputText_Aには、元の値である0.0が表示されたままです。

outputTextを使用してテストしましたが、期待する出力がそこに表示されていますが、その後は画面に読み取り専用になります。期待する出力がinputText_Aに入力された後で編集可能にしたいので、inputTextオブジェクトを選択します。

JSFからBeanに値を渡すときはinputTextを使用し、BeanからJSFに値を渡すときはoutputTextを使用することを理解しています。しかし、ここで、inputTextを使用してBeanからJSFに値を渡したいと思います。これができることを教えてもらえますか?

4

1 に答える 1

2

h:inputText(そのような機能が必要な場合)経由で更新された値を表示することはまったく問題ありません。Bean 変数に適切なgetterandが必要です。setter

たとえば、次のようになります。

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をクリックすると更新されます。

もう 1 つのことは、Ajax 経由でコンテンツを更新する場合です。parent component次に、inputTextまたは のformを再レンダリングする必要がありますinputText

    <h:commandButton immediate="true" value="Change text">
         <f:ajax event="click" render=":formID"  listener="#{dummyBean.changeText}"/>
    </h:commandButton>
于 2012-04-14T13:21:46.703 に答える