2011-06-17 54 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這是有關輸入字段的值並沒有進入請求正確..所有該投入受到高度讚賞。

相關問題