> -----Original Message-----
> From: Heath Borders [mailto:[EMAIL PROTECTED] 
> Subject: Re: <x:script /> design
> What does function overloading have to do with anything?

Sorry, maybe I misunderstood your comments "I don't think we should be
changing the name of the function within the bodyContent of the tag" and
"The tag should just generate a no-arg wrapper function around whatever
they put in the bodyContent" then.

> The script tag needs to achieve 2 goals:
> create a user-defined-named function which a developer can 
> use in jsf clientside callbacks pass clientId parameters into 
> that user-defined-named function (which could then use those 
> clientId's to call legacy code, or whatever).
> I think that we've basically got that here, so maybe we need 
> to just focus on getting those two goals accomplished.
> Are there any other requirements for this tag you can think of?

I don't, but I actually haven't suffered much from this problem at all.

Kalle

> On Mon, 3 Jan 2005 18:07:36 -0800, Korhonen, Kalle 
> <[EMAIL PROTECTED]> wrote:
> > > -----Original Message-----
> > > From: Heath Borders [mailto:[EMAIL PROTECTED]
> > > Subject: Re: <x:script /> design
> > > I don't think we should be changing the name of the 
> function within 
> > > the bodyContent of the tag.  The tag should just generate 
> a no-arg 
> > > wrapper function around whatever they put in the 
> bodyContent.  They 
> > > provide the name of the wrapper function, and can call it 
> from the 
> > > event callbacks on components.
> > 
> > ECMAscript doesn't have function overloading. You can do 
> all sort of 
> > weird hacks with prototype based languages to save a 
> reference to the 
> > original function (which is ugly; I made a stint to Flash 
> ActionScript 
> > programming some time ago), but a newly declared prototype 
> basically 
> > overrides the existing one in the same scope.
> > 
> > > We could also try to put in some namespace checks in the 
> renderer, 
> > > if we really want to catch errors.
> > 
> > Yeah, maybe, but it might be difficult to reliably predict 
> the order 
> > of which the browser interprets the page. Anyway, I meant my code 
> > snippet only as an idea for discussion and if found to be 
> good enough, 
> > a basis for somebody to polish it up for an actual implementation.
> > 
> > Kalle
> > 
> > > On Mon, 3 Jan 2005 17:16:40 -0800, Korhonen, Kalle 
> > > <[EMAIL PROTECTED]> wrote:
> > > > > -----Original Message-----
> > > > > From: Heath Borders [mailto:[EMAIL PROTECTED]
> > > > > Subject: Re: <x:script /> design I like the way you went with 
> > > > > that.
> > > > > We could probably have a different parameter type that would 
> > > > > automatically do the document.getElementById call for you.
> > > > > I'm really a fan of using the <x:script/> as just a means
> > > of calling
> > > > > a templated function.  We should probably try to take
> > > this as far as
> > > > > it could go, so that we have a maximally
> > > >
> > > > Yeah, already when I sent the email I was thinking of
> > > cleaning it up a
> > > > bit. How about:
> > > > <x:script>
> > > > <x:function name="disableMyInputText" calls="disable"
> > > > parameters="myInputText, myOtherInputText"/> function 
> > > > disable(myInputText, myOtherInputText) {
> > > myInputText.disabled=true;
> > > > myOtherInputText.disabled=true; } </x:script>
> > > >
> > > > Where "calls" is an optional attribute if a text child node
> > > exists. If
> > > > it doesn't, a text node would be required, i.e.:
> > > > <x:script>
> > > >  <x:function name="disableMyInputText" parameters="myInputText, 
> > > > myOtherInputText">
> > > >    myInputText.disabled=true;
> > > >    myOtherInputText.disabled=true;  </x:function> </x:script>
> > > >
> > > > Would render:
> > > > <script>
> > > > function disableMyInputText() {
> > > >  disableMyInputText$Parameters(
> > > >
> > > 
> document.getElementById('weirdParentId:anotherParentId:myInputText')
> > > ,
> > > >   document.getElementById('uglyParentId:myOtherInputText')
> > > >  );
> > > > }
> > > >
> > > > function disableMyInputText$Parameters(myInputText,
> > > myOtherInputText)
> > > > {  myInputText.disabled=true;  
> myOtherInputText.disabled=true; } 
> > > > </script>
> > > >
> > > > The nice thing about this is that you could make most of
> > > your existing
> > > > javascript working without changing it with creative use of
> > > x:function
> > > > as wrappers to the existing functions.
> > > >
> > > > Kalle
> > > >
> > > > > On Mon, 3 Jan 2005 15:26:00 -0800, Korhonen, Kalle 
> > > > > <[EMAIL PROTECTED]> wrote:
> > > > > > > -----Original Message-----
> > > > > > > From: Travis Reeder [mailto:[EMAIL PROTECTED]
> > > > > > > Subject: Re: <x:script /> design I like it, but for
> > > simplicity's
> > > > > > > sake if the x:script is going to replace matching id 
> > > > > > > strings, then I don't see the need for having the for and 
> > > > > > > the id.  Why not just the for like so:
> > > > > > > <x:script language="javascript" type="text/javascript"> 
> > > > > > > <x:scriptParameter for="myInputText" /> function
> > > > > > > disableMyInputText() {
> > > > > > >   var input = document.getElementById('myInputText');
> > > > > > >   input.disabled=true;
> > > > > > > }
> > > > > > > </x:script>
> > > > > >
> > > > > > Hold on guys.. why would we even need to explicitly call
> > > > > > document.getElementById() anymore? Couldn't
> > > > > <x:scriptParameter> render
> > > > > > that line and handle the whole shebang of getting a
> > > > > reference to the
> > > > > > object with its appropriate clientId.. i.e. like this:
> > > > > > <x:script language="javascript" type="text/javascript"> 
> > > > > > <x:scriptGetElement var="input" for="myInputText" 
> /> function
> > > > > > disableMyInputText() {  input.disabled=true; } </x:script>
> > > > > >
> > > > > > The problem with this is that it would create the
> > > > > references in global
> > > > > > scope, which might not be a huge deal and there are ways to
> > > > > deal with
> > > > > > that, but anyways, if we think this a little bit further,
> > > > > we could do:
> > > > > > <x:script language="javascript" type="text/javascript"> 
> > > > > > <x:scriptFunctionParameters id="disableMyInputText"
> > > for="disable"
> > > > > > elementIds="myInputText, myOtherInputText"/> function 
> > > > > > disable(myInputText, myOtherInputText) {
> > > > > myInputText.disabled=true;
> > > > > > myInputText.disabled=true; } </x:script>
> > > > > >
> > > > > > Which would render:
> > > > > > <script>
> > > > > > function disableMyInputText() {
> > > > > >
> > > > > >
> > > > >
> > > 
> disable(document.getElementById('weirdParentId:anotherParentId:myInp
> > > > > ut
> > > > > > Te
> > > > > > xt'),
> > > > > >
> > > > > >
> > > document.getElementById('weirdParentId:anotherParentId:myInputText
> > > > > > ')
> > > > > >  );
> > > > > > }
> > > > > >
> > > > > > function disable(myInputText, myOtherInputText) { 
> > > > > > myInputText.disabled=true;  
> myOtherInputText.disabled=true; } 
> > > > > > </script>
> > > > > >
> > > > > > So we get nice parametrized functions that can be reused
> > > > > and less to
> > > > > > write since we don't need to deal with getting the 
> client ids 
> > > > > > - win/win situation right? Why wouldn't this work?
> > > > > >
> > > > > > Kalle
> > > > > >
> > > > > >
> > > > > > > Heath Borders wrote:
> > > > > > > >Here is the JSP and rendering hints I was thinking about 
> > > > > > > >for the <x:script /> tag.
> > > > > > > >
> > > > > > > >JSP Example:
> > > > > > > >
> > > > > > > ><h:inputText id="myInputText" value="#{bean.text}"
> > > /> <x:script
> > > > > > > >language="javascript" type="text/javascript"> 
> > > > > > > ><x:scriptParameter for="myInputText" 
> id="p_myInputText" /> 
> > > > > > > >function
> > > > > > > disableMyInputText() {
> > > > > > > >  var input = document.getElementById('p_myInputText');
> > > > > > > >  input.disabled=true;
> > > > > > > >}
> > > > > > > ></x:script>
> > > > > > > >
> > > > > > > >
> > > > > > > >The language and type attributes would be optional, and
> > > > > default to
> > > > > > > >"javascript" and "text/javascript" respectively.
> > > > > > > >
> > > > > > > >The scriptParameter would use the
> > > > > UIComponent.findComponent(String)
> > > > > > > >method to find a component within the current
> > > > > > > namingContainer with the
> > > > > > > >given id.  The <x:script> tag would then search its
> > > > > > > bodyContent for any
> > > > > > > >strings matching the <x:scriptParameter> id's and replace
> > > > > > > them with the
> > > > > > > >clientId of the UIComponent from the <x:scriptParameter> 
> > > > > > > >for
> > > > > > > attribute.
> > > > > > > >
> > > > > > > >This would be a simple way to include javascript (and
> > > > > > > appropriate code
> > > > > > > >commenting and <noscript> tags for non-javascript
> > > > > browsers) in JSF
> > > > > > > >code.
> > > > > > > >
> > > > > > > >I'd appreciate any input on this design.
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Travis Reeder
> > > > > > > Ecommstats Web Analytics
> > > > > > > www.ecommstats.com
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > -Heath Borders-Wing
> > > > > [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > >
> > >
> > > --
> > > -Heath Borders-Wing
> > > [EMAIL PROTECTED]
> > >
> > >
> > 
> 
> 
> --
> -Heath Borders-Wing
> [EMAIL PROTECTED]
> 
> 

Reply via email to