0

リクエストスコープのマネージドBeanを介してページで取得されたBean #{pim}(ページが最初にロードされた#{requestScope}とき)からcommandButtonが押されたときまでの値を設定する必要があります。ただし、コマンドボタンを押すと、インスタンス化されたばかりの#{pim}Beanの値が使用されます。これは空になります。

        #{pim.targetId}

        <p:commandButton value="View">    
            <f:setPropertyActionListener value="#{pim.targetId}" target="#{requestScope.id}" />  
        </p:commandButton>

#{pim}ただし、リクエスト後に値を含むBeanが破棄されたため、これは機能しません。ページが読み込まれたときに取得された値が割り当てられることを期待して機能することを期待していましたが、そのようには機能しません。

4

1 に答える 1

0

<f:param>の代わりに使用し<f:setPropertyActionListener>ます。前者は、コマンド ボタンのレンダリング中に、生成された ajax スクリプトでリクエスト パラメータを直接設定しますが、後者は、フォーム送信の処理中にサーバー側でプロパティを完全に設定します (したがって、これは新しいリクエストに関係するため、すでに失われています。スコープ付きプロパティをリクエストします)。

<f:param name="id" value="#{pim.targetId}" />  

@ManagedProperty("#{param.id}") 
private Long targetId;
于 2012-10-21T15:02:24.760 に答える