我的应用程序允许用户在消息字段中输入文本,当他正在输入时,管理员必须能够在不同的控制台中看到正在输入的内容。
为此,我需要定期向托管的Bean发送数据,然后从那里发送到业务层。
<h:form>
Name : <h:inputText id="name" value="#{clockBean.name}"/>
Message: <h:inputText id="age" value="#{clockBean.msg}"/>
<a4j:poll id="poll" interval="20000" enabled="#{clockBean.enabled}" action="#
{clockBean.process}" render="clock,counter"/>
<a4j:log/>
</h:form>
我有一个名为name和msg的managedBean属性,当我在clockBean managed Bean的process()方法中处理它们时,我需要访问这些属性并将它们发送到业务层。
@ManagedBean
@ViewScoped
public class ClockBean implements Serializable{
private string msg;
private string name;
private boolean enabled;
public void process(){
System.out.println("timer event calling *** - msg is "+msg+" : name is "+name); }
//getters setters & rest of the code
目前我的bean范围是ViewScoped,当轮询每20秒运行时,我得到的两个字段的值为null。如何在给定时间间隔内获取名称和消息属性值?是否有更好的方法来解决这个问题?
a4j:poll
不能提交表单(可能是richfaces的bug),你可以很容易地使用a4j:function
来实现,只需创建一个js函数并从js中使用setInterval()
调用它。 - bogdan.mustiataa4j:poll
中有一个binding="#{clockBean.msg}"
绑定。你可能应该将其删除,因为只有在极少数情况下需要绑定,而且仅在某些模糊原因下需要手动访问组件本身的数据时才需要。 - bogdan.mustiata