我有一个mediaOutput标签,该标签在其createContent中属性,要求背衬bean是在一定的状态。值的列表,其被填充在一个初始化方法,必须可用。

我因此增加了整个辅助bean保活标签。我现在确实看到了backingBean一些(RichFaces的)代理bean的代替,而是填充列表为空试。

如何实现这一目标?

我检查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
}
有帮助吗?

解决方案

声明你bean是在session范围。

如果您在其他豆请求唯一信息,那么只需要创建一个新的请求作用域的bean,并将所有其他的东西在那里。这是完全易读的。

其他提示

这是没有问题的。你不必保持Mediabean活着,你不能。这是在createContent中参数给出的豆将由MediaOutput组件来创建。 “豆”字头是令人不安的一个 - 这只是一个简单的Java类,它包含涂料(...)方法。你必须在这个简单的“豆”作为ManagedProperty得到的keepalived豆(例如支持bean),它可以包含KEEPALIVED信息了。

示例:

abc.xhtml并用@ManagedBean ABC.java(名称= “ABCBean”)和@RequestScoped注释。 您可以使用ABCBean作为与abc.xhtml一个backing bean,而不是在mediaOutput.createContent参数!但是你可以用@ManagedBean(NAME =“MediaBean”)注释创建MediaBean.java,它有一个@ManagedProperty其获取ABCBean实例中MediaBean。而ABCBean实例KEEPALIVED ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top