How to Implement progressbar with GWT?

眉间皱痕 提交于 2020-01-02 07:20:37

问题


In a GWT application, I have a long process that runs server side and invoked using rpc(GWT dispatcher) and I want to have a feedback to the Client as a progress bar showing messages and the total progress. My question is how to recover messages and the progress dynamically from the server?

I'm interested in any solution

thank you in advance for your help.


回答1:


Have a look at the get progress bar in the incubator. Here is another example of someone using it.


UPDATE

If you want to display the progress on the client side, you will need to make async calls to the server periodically to fetch the progress value. In other words, the server needs to write / store somewhere how far it is with its progress. The client then makes an async call to the server, which reads that value and sends it back to the client, which can update the progress bar.




回答2:


A regular Async call should do it. But you will also need to implement some sort of polling mechanism from the client side so that it will send an Async request to the server at periodic intervals.

See the tutorials on Async calls http://code.google.com/webtoolkit/doc/latest/tutorial/RPC.html

For the polling mechanism, you should be able to do it with a simple while loop. Inside the while loop, keep calling the getStatus() server call till you get to 100% complete status.




回答3:


Or you can use the Channel API. It is available in both Python and Java (and probably the other supported langurs as well). https://developers.google.com/appengine/docs/java/channel/




回答4:


Taking a look at the progress syncer and progress bar from upload4gwt might give you some ideas.




回答5:


http://www.java2s.com/Code/Java/GWT/GWTprogressbar.htm

You must use a timer to periodically poll the server, and keep the progress calculation on the server.



来源:https://stackoverflow.com/questions/6902146/how-to-implement-progressbar-with-gwt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!