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

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

更新:我不会用轮询来做,因为即使数据没有改变,轮询每次都会发出请求。我会使用onchange事件、队列和请求延迟来完成此操作。如果a4j:poll没有提交表单(可能是richfaces中的bug?),您可以用a4j:function轻松地实现这一点,只需创建一个js函数并用js中的setInterval()调用它。

得到了我的问题的答案。。我没有添加

 execute="@form" 

属性添加到我的投票标记。。因此,与输入字段相关的值没有正确地进入请求中。。所有的投入都得到了高度赞赏。

相关内容

  • 没有找到相关文章

最新更新