Richfaces 使用 ajax 向服务器发送数据
Posted
技术标签:
【中文标题】Richfaces 使用 ajax 向服务器发送数据【英文标题】:richfaces sending data to the server using ajax 【发布时间】:2011-09-17 03:05:14 【问题描述】:我的应用程序允许用户在消息字段中键入文本,并且当他键入时,它必须允许管理员在不同的控制台中查看正在键入的内容。
为此 我需要定期将数据发送到托管 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 属性,我需要访问 name 和 msg 属性并在处理它们时将它们发送到业务层 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 范围为 ViewScoped,当轮询每 20 秒运行一次时,我得到 2 个字段的空值。 当轮询在给定的时间间隔内运行时,如何获取 name 和 msg 属性值? 有没有更好的方法来解决这个问题?
【问题讨论】:
【参考方案1】:会话范围仅对当前用户可见。因此,如果您尝试在管理员页面中获取#clockBean
,您实际上最终会得到一个全新的 bean。为了使管理员用户也可以使用此信息,您需要保留并阅读此信息。
更新:
我不会用轮询来做,因为即使数据没有改变,轮询每次都会发出请求。我会使用 onchange 事件、队列和请求延迟来实现。如果a4j:poll
没有提交表单(可能是richfaces 中的错误?),您可以使用a4j:function
轻松实现这一点,只需创建一个js 函数并使用js 中的setInterval()
调用它。
【讨论】:
是的,我将保留它们。我真正的问题是如何通过 managedBean 定期向业务层发送数据。我如何根据 Richfaces 中的轮询功能定期进行 ajax 提交? 我不会使用轮询来执行此操作,因为即使数据没有更改,轮询每次都会发出请求。我会使用 onchange 事件、队列和请求延迟来实现。如果a4j:poll
没有提交表单(可能是richfaces 中的错误?),您可以使用a4j:function
轻松实现这一点,只需创建一个js 函数并从js 中使用setInterval()
调用它。
顺便说一句,我注意到您将binding="#clockBean.msg"
作为a4j:poll
的绑定。您可能希望删除它,因为仅在极少数情况下需要绑定,因为某些不明原因需要手动访问组件本身的数据。
是的 bogdan..binding 是错误的.. 我已经从 jSF 标记中删除了我的绑定代码部分。在我的clockBean中,我有 @ManagedBean @ViewScoped public class ClockBean implements Serializable private string msg;私有字符串名称;启用私有布尔值; public void process() System.out.println("定时器事件调用 *** - msg is "+msg+" : name is "+name); //getter setter & 其余代码
【参考方案2】:
得到了我的问题的答案..我没有添加
execute="@form"
我的投票标签的属性..所以与输入字段相关的值没有正确进入请求..所有输入都非常感谢。
【讨论】:
你的回答对我帮助很大!以上是关于Richfaces 使用 ajax 向服务器发送数据的主要内容,如果未能解决你的问题,请参考以下文章
带有 Mojarra 2.1.28 和 RichFaces 4.3 的 Internet Explorer Ajax 错误