1

createContent 属性で、バッキング Bean が特定の状態にあることを要求する mediaOutput タグがあります。init メソッドに入力される値のリストが使用可能である必要があります。

したがって、バッキング Bean 全体に keepAlive タグを追加しました。確かに、(richfaces) プロキシ Bean の代わりに backingBean が表示されますが、入力されたリストは再び null です。

これを可能にする方法は?

init メソッドが呼び出され、init メソッドにリストが入力されていることを確認しました。

<a4j:keepAlive beanName="myBean" />
<a4j:mediaOutput createContent="#{myBean.writeChart}" ... />

バッキングビーン

public class MyBean implements Serializable {

public List list;

public void init(ActionEvent event) {
   // call some resource to fill the list
   list = service.getItems();
}

public void writeChart(final OutputStream out, final Object data) throws IOException {
   // list is null
}

// getters & setters
}
4

2 に答える 2

0

これは問題ではありません。Mediabeanを存続させる必要はありませんし、そうすることもできません。createContentパラメーターで指定されたBeanは、MediaOutputコンポーネントによって作成されます。「bean」プレフィックスは邪魔なものです。これは、paint(...)メソッドを含む単純なJavaクラスにすぎません。この単純な「Bean」でキープアライブBean(たとえば、バッキングBean)をManagedPropertyとして取得する必要があり、キープアライブ情報も含めることができます。

例:

@ManagedBean(name = "ABCBean")および@RequestScopedアノテーションを使用したabc.xhtmlおよびABC.java。ABCBeanをabc.xhtmlのバッキングBeanとして使用しますが、mediaOutput.createContentパラメーターでは使用しません。ただし、@ ManagedBean(name = "MediaBean")アノテーションを使用してMediaBean.javaを作成でき、MediaBean内のABCBeanインスタンスを取得する@ManagedPropertyがあります。そして、ABCBeanインスタンスはキープアライブです...

于 2010-06-17T12:38:38.933 に答える