myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Håkon Sagehaug <hakon.sageh...@uni.no>
Subject Re: Using statusIndicator
Date Fri, 04 Mar 2011 15:38:33 GMT
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 <richard.k.yee@gmail.com> 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 <hakon.sagehaug@uni.no>
>
> > 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 <darkarena@gmail.com> 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 <richard.k.yee@gmail.com>
> 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 <hakon.sagehaug@uni.no>
> > > 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 <darkarena@gmail.com> 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<hakon.sagehaug@uni.no>
> > > >>>>
> > > >>>> 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<darkarena@gmail.com>
>  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<richard.k.yee@gmail.com
> >
> > > >>>>>> 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<
> hakon.sagehaug@uni.no
> > >
> > > >>>>>>>
> > > >>>>>> 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<darkarena@gmail.com>
> >  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"<
> > > hakon.sagehaug@uni.no>
> > > >>>>>>>>> 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<richard.k.yee@gmail.com>
> > >  wrote:
> > > >>>>>>>>>>
> > > >>>>>>>>>> Try putting it inside the tr:form
or inside your panelPage
> > > >>>>>>>>>>>
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> -Richard
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> 2011/3/1 Håkon Sagehaug<hakon.sagehaug@uni.no>
> > > >>>>>>>>>>>
> > > >>>>>>>>>>> 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<darkarena@gmail.com>
> > >  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"<
> > > >>>>>>>>>>>>>
> > > >>>>>>>>>>>> hakon.sagehaug@uni.no>
> > > >>>>>>
> > > >>>>>>> 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
> > > >>>>>>>>>>>>>>
> > > >>>>>>>>>>>>>
> > > >>>
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message