2011-06-17 70 views
4

我的应用程序允许用户在消息字段中输入文本,并且在htat时间输入时,必须允许管理员查看在不同控制台中键入的内容。richfaces使用ajax向服务器发送数据

为此 我需要定期发送数据到托管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> 

我有名字和味精managedBean性质,我需要访问的名称和味精性质,并将它们发送到业务层,当我在 过程()的clockBean的方法管理的Bean处理它们。

@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作用范围为ViewScopedand当轮询每20秒运行一次时,我会为2个字段获取空值。 如何在给定时间间隔内运行轮询时获取名称和msg属性值? 有没有更好的方法来解决这个问题?

回答

3

会话范围仅对当前用户可见。因此,如果您尝试在管理页面中获得#{clockBean},那么您最终会得到一个全新的bean。为了使管理员用户也可以使用这些信息,您需要坚持这些信息并阅读它。

更新: 我不会用轮询来做,因为即使数据没有变化,轮询也会执行请求。我会用onchange事件,队列和请求延迟来做到这一点。如果a4j:poll没有提交表单(richfaces中的bug可能?),您可以使用a4j:function轻松实现此功能,只需创建一个js函数并使用js中的setInterval()来调用它。

+0

是的,我会坚持他们..我真正的问题是我如何通过managedBean定期发送数据到业务层。 如何在richfaces中根据轮询功能定期做ajax提交? – Sanath 2011-06-20 07:40:47

+0

我不会用轮询来完成它,因为即使数据没有改变,轮询也会每次执行请求。我会用onchange事件,队列和请求延迟来做到这一点。 如果`a4j:poll`没有提交表单(在richfaces中的bug可能?),你可以用`a4j:function`轻松实现,并且只需创建一个js函数并使用js中的`setInterval()`调用它。 – 2011-06-20 10:22:33

1

回答了我的问题。我还没有添加

execute="@form" 

属性为我的调查tag..so这是有关输入字段的值并没有进入请求正确..所有该投入受到高度赞赏。

相关问题