Yeah. ICEfaces has an interesting model. Their AJAX is merely a synchronization between the client and the DOM stored on the server. There are a number of real advantages to the framework and a number of disadvantages.
Trinidad is architected on a different principal. There is a lot of work done directly on the client and their is no server-side Dom. And while ServerSide push can be done in Trinidad with some extensions to the framework, they have to be expressly enabled on a component by commoner basis. Scott On Mar 4, 2011, at 8:39 AM, Håkon Sagehaug <[email protected]> wrote: > Hi, > > So we're trying to implement part of a system, already implemented with > icefaces using myfaces and Trinidad. We decided to compare alittle. Icefaces > have Ajax Push, so it makes it "easy" to update clients whenever there are > things to update. SO when a user logs in, we're calling tree different > web-services in the backend code. In the other application we update after > each call to one of the web service saying > > 1. Got security token > 2. got user information > 3. got dataset etc > > All these are separate call to our web-services, and it would be nice to > update the user about the events. For the login we don't start a new thread. > Other actions such as adding a dataset, where the user want to fetch one or > more files from ftp/http we start a new thread on the server.First the > thread sends the requets for adding the dataset to the web service, and gets > back a id. The web service starts a thread for downloading the files, when > finished sets the dataset status to complete. In the mean time the thread on > the web server polls the status of the download with the id given to him. So > when the Web server thread gets complete from the web service, a message is > given to the user. > > Did that give an okay overview? Just a dumb question, how to enable the > poll, setting a positive poll interval? And again thanks for the patience > > cheers, Håkon > > > On 4 March 2011 16:07, Richard Yee <[email protected]> wrote: > >> enable it on the server as a result of pressing the commandButton. can you >> answer some of the questions I posed earlier? >> If we see the whole picture, then perhaps we can come up with a complete >> solution. >> >> -Richard >> >> 2011/3/4 Håkon Sagehaug <[email protected]> >> >>> Hi >>> >>> Thanks for the tips and holding out this thread. To kick of the poll do >> I >>> use rendered=true/false, it should have had a enable/disable. Or can I >> set >>> the interval to 0 or -1. >>> >>> Cheers, Håkon >>> >>> On 4 March 2011 14:18, Scott O'Bryan <[email protected]> wrote: >>> >>>> Yeah, I agree with Richard now that I know your trying to dynamically >>>> update it. The poll components will kick off the AJAX request and >>>> your partialTrigger (set to the poll component) will allow the text to >>>> change. >>>> >>>> I would also suggest disabling the poll component when you don't >>>> expect any changes (ie. Maybe it doesn't start until the login is >>>> submitted and then it turns off after the login successfully >>>> completed). >>>> >>>> Does anyone know of "Streaming Requests" are handled in the next >>>> servlet spec? If so, it would be cool for JSF to >>>> Do something with them, allow renderkits like Trinidad to stream >>>> updates in a more generic fashion. >>>> >>>> On Mar 4, 2011, at 5:53 AM, Richard Yee <[email protected]> >> wrote: >>>> >>>>> Hakon, >>>>> See my email from yesterday. That is why I suggested using the >> tr:poll >>>> component. How many different status messages will you have? What >> period >>> of >>>> time will the messages be changing? Depending on these answers, the >>> tr:poll >>>> component or the statusIndicator will work. Can you list the sequence >> of >>>> events the timing (ie. 2 seconds or 2 minutes later xxx happens on the >>>> server.) are you starting a separate thread that eventually updates a >>> status >>>> message? >>>>> >>>>> Richard >>>>> >>>>> Sent from my iPhone >>>>> >>>>> On Mar 4, 2011, at 1:34 AM, Håkon Sagehaug <[email protected]> >>>> wrote: >>>>> >>>>>> Hi >>>>>> >>>>>> I put the form in various places, but I could not get the wanted >>> effect. >>>>>> Just curious, since this is an update of a value on the server side. >>> The >>>>>> clients somehow needs to know if the value have changed or not. I >>> guess >>>>>> this is somewhere referred to as server push. My impression of the >>>>>> partialTriggers is that an action is taken on the client side, and >>> then >>>>>> something is triggered on the client side. >>>>>> So in my case the the value form the backing bean id read, but only >>> when >>>> the >>>>>> button is clicked, not the hole "login session". Is this correct? I >>>> guess >>>>>> what to me sounds correct is to have some sort of value change >>> listener >>>> on >>>>>> the value for the output text, but I guess that's more for input >> text >>>> etc >>>>>> >>>>>> Did this make sense? >>>>>> >>>>>> Cheers, Håkon >>>>>> >>>>>> >>>>>> On 3 March 2011 18:18, Scott O'Bryan <[email protected]> wrote: >>>>>> >>>>>>> Hakkon, put the form around everything and see if it changes the >> PPR >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 03/03/2011 10:00 AM, Richard Yee wrote: >>>>>>> >>>>>>>> what is the initial value of pollText in your backing bean? If it >> is >>>> "", >>>>>>>> you >>>>>>>> should set it to something else, ie. "Processing". >>>>>>>> >>>>>>>> The outputText inside statusIndicator will only show during the >> time >>>> the >>>>>>>> Ajax request is being made. Once the response is returned, it will >>>>>>>> disappear. >>>>>>>> >>>>>>>> -Richard >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 2011/3/3 Håkon Sagehaug<[email protected]> >>>>>>>> >>>>>>>> Hi >>>>>>>>> >>>>>>>>> I now have my login page like this >>>>>>>>> >>>>>>>>> <?xml version="1.0" encoding="UTF-8"?> >>>>>>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >>>>>>>>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> >>>>>>>>> <html xmlns="http://www.w3.org/1999/xhtml" >>>>>>>>> xmlns:f="http://java.sun.com/jsf/core" >>>>>>>>> xmlns:h="http://java.sun.com/jsf/html" >>>>>>>>> xmlns:tr="http://myfaces.apache.org/trinidad"> >>>>>>>>> >>>>>>>>> <f:view> >>>>>>>>> <tr:document title="eSysbio-myFaces-Trinidad"> >>>>>>>>> >>>>>>>>> <tr:panelPage> >>>>>>>>> <f:facet name="infoStatus"> >>>>>>>>> <tr:legend name="required" /> >>>>>>>>> </f:facet> >>>>>>>>> <tr:form> >>>>>>>>> <h:panelGrid colums="2"> >>>>>>>>> <tr:outputLabel value="Username" /> >>>>>>>>> <tr:inputText id="username" >>>>>>>>> value="#{helloWorldBacking.username}" >>>>>>>>> required="true" /> >>>>>>>>> <tr:outputLabel value="Password" /> >>>>>>>>> <tr:inputText id="password" >>>>>>>>> value="#{helloWorldBacking.password}" >>>>>>>>> required="true" secret="true" /> >>>>>>>>> >>>>>>>>> </h:panelGrid> >>>>>>>>> <tr:commandButton id="loginButton" text="Login" >>>>>>>>> partialSubmit="true" >>>>>>>>> actionListener="#{helloWorldBacking.send}" /> >>>>>>>>> >>>>>>>>> >>>>>>>>> <!-- >>>>>>>>> <tr:statusIndicator> >>>>>>>>> <tr:outputText >>> value="#{helloWorldBacking.pollText}" >>>>>>>>> /> >>>>>>>>> </tr:statusIndicator> >>>>>>>>> --> >>>>>>>>> <tr:outputText value="#{helloWorldBacking.pollText}" >>>>>>>>> partialTriggers="loginButton" /> >>>>>>>>> </tr:form> >>>>>>>>> </tr:panelPage> >>>>>>>>> >>>>>>>>> </tr:document> >>>>>>>>> </f:view> >>>>>>>>> </html> >>>>>>>>> >>>>>>>>> But then I got nothing in the outPutText field. Any other >> hint/tips >>>> or >>>>>>>>> tricks. I really appreciate the help >>>>>>>>> >>>>>>>>> Cheers, Håkon >>>>>>>>> >>>>>>>>> On 3 March 2011 17:25, Scott O'Bryan<[email protected]> >> wrote: >>>>>>>>> >>>>>>>>> That doesn't seem to make any sense to me Richard. The poll >>>> component >>>>>>>>>> does not replace statusIndicator, they simply do two different >>>> things. >>>>>>>>>> The purpose of the poll component is to initiate a request based >>> on >>>> a >>>>>>>>>> clock instead of a user click. You still need some way to >> display >>>> the >>>>>>>>>> information.. >>>>>>>>>> >>>>>>>>>> Hakon, >>>>>>>>>> >>>>>>>>>> The partial trigger in this case should be on the output text >>>> although >>>>>>>>>> having it on the status indicator should also work (you'll just >>> get >>>> a >>>>>>>>>> larger payload). >>>>>>>>>> >>>>>>>>>> Try this. Remove the status indicator and only have the output >>>> text. >>>>>>>>>> Make sure your outputText is located inside the form (possible >>> your >>>>>>>>>> getting a scoping issue). >>>>>>>>>> >>>>>>>>>> Does that work? It should. >>>>>>>>>> >>>>>>>>>> On Mar 3, 2011, at 9:06 AM, Richard Yee<[email protected] >>> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> You don't want statusIndicator, use tr:poll instead >>>>>>>>>>> >>>>>>>>>>> Richard >>>>>>>>>>> >>>>>>>>>>> Sent from my iPhone >>>>>>>>>>> >>>>>>>>>>> On Mar 3, 2011, at 7:48 AM, Håkon Sagehaug< >> [email protected] >>>> >>>>>>>>>>> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Hi >>>>>>>>>>>> >>>>>>>>>>>> Yes, that was an old cut and past mistake, I've got >> loginButton >>> as >>>> id >>>>>>>>>>>> >>>>>>>>>>> for >>>>>>>>>> >>>>>>>>>>> the button. The latest test are with loginButton, not button2. >> So >>>> this >>>>>>>>>>>> >>>>>>>>>>> way >>>>>>>>>> >>>>>>>>>>> of doing it should normally work? >>>>>>>>>>>> >>>>>>>>>>>> cheers, Håkon >>>>>>>>>>>> >>>>>>>>>>>> On 3 March 2011 16:35, Scott O'Bryan<[email protected]> >>> wrote: >>>>>>>>>>>> >>>>>>>>>>>> Umm. Considering the id of your button is button2, I'm not >> sure >>>> why >>>>>>>>>>>>> your partialTrigger is loginButton. Can you explain? >>>>>>>>>>>>> >>>>>>>>>>>>> On Mar 3, 2011, at 6:46 AM, "Håkon Sagehaug"< >>>> [email protected]> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I might not get the full point here ;). Here is what I >> tried, >>>> put >>>>>>>>>>>>>> >>>>>>>>>>>>> trigger >>>>>>>>>> >>>>>>>>>>> on >>>>>>>>>>>>> >>>>>>>>>>>>>> the statusIndicator like here >>>>>>>>>>>>>> >>>>>>>>>>>>>> <tr:statusIndicator partialTriggers="loginButton"> >>>>>>>>>>>>>> <f:facet name="busy"> >>>>>>>>>>>>>> <tr:outputText >>>>>>>>>>>>>> >>>>>>>>>>>>> value="#{helloWorldBacking.pollText}" >>>>>>>>>>>>> >>>>>>>>>>>>>> /> >>>>>>>>>>>>>> </f:facet> >>>>>>>>>>>>>> </tr:statusIndicator> >>>>>>>>>>>>>> >>>>>>>>>>>>>> And on the outputText like here >>>>>>>>>>>>>> >>>>>>>>>>>>>> <tr:statusIndicator partialTriggers="loginButton"> >>>>>>>>>>>>>> <f:facet name="busy"> >>>>>>>>>>>>>> <tr:outputText >>>>>>>>>>>>>> >>>>>>>>>>>>> value="#{helloWorldBacking.pollText}" >>>>>>>>>>>>> >>>>>>>>>>>>>> partialTriggers="loginButton"/> >>>>>>>>>>>>>> </f:facet> >>>>>>>>>>>>>> </tr:statusIndicator> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Where loginButton is >>>>>>>>>>>>>> >>>>>>>>>>>>>> <tr:commandButton id="button2" text="Login" >>>> partialSubmit="true"/> >>>>>>>>>>>>>> >>>>>>>>>>>>>> But nothing seems to have the wanted effect. I looks like it >>>> picks >>>>>>>>>>>>>> >>>>>>>>>>>>> up >>>>>>>>> >>>>>>>>>> the >>>>>>>>>> >>>>>>>>>>> initial value for the helloWorldBacking.pollText, but when this >>>>>>>>>>>>>> >>>>>>>>>>>>> value >>>>>>>>> >>>>>>>>>> changes it's it not propagated in the UI. Maybe this can't be >> done >>>>>>>>>>>>>> >>>>>>>>>>>>> like >>>>>>>>>> >>>>>>>>>>> I've >>>>>>>>>>>>> >>>>>>>>>>>>>> sketched out. The backing code is the same as sent in a >>> earlier >>>>>>>>>>>>>> >>>>>>>>>>>>> email. >>>>>>>>> >>>>>>>>>> Other tips? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Cheers, Håkon >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 3 March 2011 05:23, Richard Yee<[email protected]> >>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Try putting it inside the tr:form or inside your panelPage >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -Richard >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2011/3/1 Håkon Sagehaug<[email protected]> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks for the reply, here is my xhtml, with a simple >> login >>>> form >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> <tr:document title="Login Demo"> >>>>>>>>>>>>>>>> <tr:statusIndicator> >>>>>>>>>>>>>>>> <f:facet name="busy"> >>>>>>>>>>>>>>>> <tr:outputText >>> value="#{helloWorldBacking.pollText}" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> /> >>>>>>>>> >>>>>>>>>> </f:facet> >>>>>>>>>>>>>>>> </tr:statusIndicator> >>>>>>>>>>>>>>>> <tr:form> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> <tr:panelPage> >>>>>>>>>>>>>>>> <f:facet name="infoStatus"> >>>>>>>>>>>>>>>> <tr:legend name="required" /> >>>>>>>>>>>>>>>> </f:facet> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> <tr:inputText label="Username" id="username" >>>>>>>>>>>>>>>> value="#{helloWorldBacking.username}" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> required="true" >>>>>>>>>> >>>>>>>>>>> /> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> <tr:inputText label="Password" id="password" >>>>>>>>>>>>>>>> value="#{helloWorldBacking.password}" >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> required="true" >>>>>>>>>> >>>>>>>>>>> secret="true" /> >>>>>>>>>>>>>>>> <tr:commandButton id="button2" text="Login" >>>>>>>>>>>>>>>> partialSubmit="true" >>>>>>>>>>>>>>>> action="#{helloWorldBacking.send}" /> >>>>>>>>>>>>>>>> </tr:panelPage> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> </tr:form> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> </tr:document> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> And parts of the backing bean >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> public String send() { >>>>>>>>>>>>>>>> FacesContext facesContext = >>>> FacesContext.getCurrentInstance(); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> System.out.println("user name " + username + " is logged >>> in >>>> " >>>>>>>>>>>>>>>> + userLoggedIn); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> try { >>>>>>>>>>>>>>>> Thread.sleep(5000); >>>>>>>>>>>>>>>> Token tok = tokenMgr.getToken(username, password, >>> true); >>>>>>>>>>>>>>>> Thread.sleep(2000); >>>>>>>>>>>>>>>> pollText = "Token fetched"; >>>>>>>>>>>>>>>> if (tok != null) { >>>>>>>>>>>>>>>> userLoggedIn = true; >>>>>>>>>>>>>>>> return ("success"); >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> username = ""; >>>>>>>>>>>>>>>> password = ""; >>>>>>>>>>>>>>>> } catch (TrustException e1) { >>>>>>>>>>>>>>>> e1.printStackTrace(); >>>>>>>>>>>>>>>> } catch (AxisFault e) { >>>>>>>>>>>>>>>> e.printStackTrace(); >>>>>>>>>>>>>>>> } catch (FileNotFoundException e) { >>>>>>>>>>>>>>>> e.printStackTrace(); >>>>>>>>>>>>>>>> } catch (XMLStreamException e) { >>>>>>>>>>>>>>>> e.printStackTrace(); >>>>>>>>>>>>>>>> } catch (InterruptedException e) { >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> e.printStackTrace(); >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> FacesMessage message = new FacesMessage("Login failed"); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> facesContext.addMessage("username", message); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> username = ""; >>>>>>>>>>>>>>>> password = ""; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> return ("error"); >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>> As you can see I sleep the thread to simulate the >> operations >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> needed >>>>>>>>> >>>>>>>>>> to >>>>>>>>>> >>>>>>>>>>> log >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> in the user, for now I'm only getting the token. After >> that >>>> I'll >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> fetch >>>>>>>>>> >>>>>>>>>>> the >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> project, data etc... >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> So I wanted the pollText to apear dynmically in the >> status >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> indicator, >>>>>>>>>> >>>>>>>>>>> but >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> can get it to update,. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Any tips? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> cheers, Håkon >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 1 March 2011 23:23, Scott O'Bryan<[email protected]> >>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I see no reason why this wouldn't work.. What >> specifically >>> is >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> failing >>>>>>>>>> >>>>>>>>>>> for you and perhaps a code snipi might help me visualize your >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> issue. >>>>>>>>>> >>>>>>>>>>> On Mar 1, 2011, at 3:04 PM, "Håkon Sagehaug"< >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> [email protected]> >>>>>>>>>> >>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I've just stared using Trinidad and myFaces, and had a >>>> question. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I'm >>>>>>>>>> >>>>>>>>>>> implementing a login in page for uses, and wanted to use the >>>>>>>>>>>>>>>>>> statusIndicator, to give back messages for the user like >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> 1. Got user information >>>>>>>>>>>>>>>>>> 2. Loading datasets >>>>>>>>>>>>>>>>>> 3. Logged in >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> And tried to have a tr:outputText within the >>>> statusIndicator. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> The >>>>>>>>> >>>>>>>>>> value >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> the outPuttext would be linked to a backing bean, but I >>> was >>>> not >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> very >>>>>>>>>> >>>>>>>>>>> successful, do you have any other tips? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I guess one can use the progressIndicator, but I would >>> like >>>> text >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> to >>>>>>>>>> >>>>>>>>>>> be >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> returned not a procentage progress. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> cheers, Håkon >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>> >>>> >>> >>

