0

私はJSFを少し試しています。シナリオは次のとおりです。

セッション スコープのマネージド Bean があります

@ManagedBean(name = "rand")
@SessionScoped

ここで、(特に)次のことを宣言しました:

private UIOutput uiOutput;(plus getter and setter)

私のfaceletsページには

<h:outputLabel for="userGuess"  binding="#{rand.uiOutput}" 
value="#{rand.listSize}" rendered="false"/>

ページにボタンがあり、特にボタンのアクションメソッドがあります

this.uiOutput.setRendered(true);

しかし、うまくいかないようです。要素はレンダリングされません。

レンダリングされた状態で開始し、属性を変更 (true または false に設定) すると機能します。レンダリングされていない要素がマネージドBeanにあるuiOutputオブジェクトにバインドされていないという事実と関係があると思われます。この場合、どのように機能させることができますか?

4

2 に答える 2

1

私が変更したことが1つあり、現在は機能しています。ボタンを押したときに実行するメソッドの戻り値のタイプを変更し、文字列値を返し、同じページに移動しました。これでnullが返され、JSFは新しい値を生成しません。ビュー、代わりに同じビューをレンダリングし、すべてが機能しています。

新しいビューがレンダリングされるたびに、コンポーネントが新しいビューでrendered = "false"に設定されるたびに、レンダリング値をtrueまたはfalseに設定するという事実は重要ではなかったと思います。

于 2013-01-09T13:24:44.353 に答える
0

ボタンを使用して ajax 呼び出しを行っている場合、JavaScript は dom ツリーで要素を見つけてレンダリングすることができません。そもそも要素がそこにないためです。

ここには、状況をよりよく説明する同様の質問があります。

jsfでajaxを使用してコンポーネントをレンダリングする

于 2013-01-09T12:01:28.327 に答える