RichFaces的的keepAlive不工作
题
我有一个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 ...
不隶属于 StackOverflow