> -----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:myInputTe
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
>
>