Re: SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Gary VanMatre
>From: "Paul Devine" <[EMAIL PROTECTED]> 
>
> I will create the bug and attach the example code. Thanks for all your help. 
> 
> If anyone can think of a short term workaround, maybe even a javascript hack 
> I can fit in myself, that would be great too :-) 
>

I can't think of a quick fix since each UIInput component would need to capture 
it's clientId in the renderer and stuff it back into the component's attributes 
for the validator script collector.

component.getAttributes().put("org.apache.shale.validator.clientId", 
component.getClentId(facesContext);

We might be able to solve this problem globally using a propose renderer 
decorator (http://issues.apache.org/bugzilla/show_bug.cgi?id=37932). 

Gary

> -- Paul 
> 
> On 3/29/06, Gary VanMatre wrote: 
> > 
> > >From: Laurie Harper 
> > > 
> > > Why would that be needed? The s:commonsValidator tag should render 
> > > Javascript referencing the actual rendered ID of the component it's 
> > > attached to. I haven't played much with validators, much less validators 
> > > for components inside dataLists, but I would have thought this should be 
> > > able to work as it is. 
> > > 
> > 
> > I think this one is a bug. The dataList component is a naming container 
> > so any components contained in it, should get a clientId prefix from all 
> > naming containers that it's nested in. The dataList extends the UIData 
> > component who creates it's client id from the current row. 
> > 
> > public String getClientId(FacesContext context) 
> > { 
> > String clientId = super.getClientId(context); 
> > int rowIndex = getRowIndex(); 
> > if (rowIndex == -1) 
> > { 
> > return clientId; 
> > } 
> > else 
> > { 
> > return clientId + "_" + rowIndex; 
> > } 
> > } 
> > 
> > The validator script collector asks the components with the commons 
> > validator for their client id after the dataList has done it's renderering 
> > which renderers it's own children. 
> > 
> > I want to say that JSF 1.2 adds a callback to handle this but I don't 
> > understand the details yet. 
> > 
> > Paul, please create a bugzilla ticket on this one. 
> > 
> > Gary 
> > 
> > > Paul, could you include your sample JSP and, if possible, copy/paste the 
> > > rendered HTML as well, in a Bugzilla ticket so the issue gets tracked? 
> > > 
> > > L. 
> > > 
> > > Hermod Opstvedt wrote: 
> > > > Hi 
> > > > 
> > > > Did I hear forceId? - You need to use this attribute to force the name 
> > to be 
> > > > what you want. 
> > > > 
> > > > Hermod 
> > > > 
> > > > 
> > > > -Opprinnelig melding- 
> > > > Fra: Paul Devine [mailto:[EMAIL PROTECTED] 
> > > > Sendt: 29. mars 2006 22:47 
> > > > Til: user@struts.apache.org 
> > > > Emne: [Shale] commons client side validation not working inside a 
> > dataList 
> > > > 
> > > > I tried using the commons validation features of Shale. The 
> > application is 
> > > > using Myfaces 1.1.1. The validation javascript is being written back 
> > to the 
> > > > browser. The server side validation is working fine but a javascript 
> > `field 
> > > > error occurs during the . However there is a problem with the client 
> > side 
> > > > input element Id's that the javascript validation is looking for 
> > versus the 
> > > > client side id's that are generated by the dataList. The page i tried 
> > > > validation on has a Myfaces dataList inside a form, and for each 
> > iteration 
> > > > through the list there are inputs. Basically a dataList will append 
> > the `row 
> > > > index` to the client side Id to guarantee uniqueness, as in 
> > > > "myForm:myDataList_0:someRequiredField" for the first row, 
> > > > "myForm:myDataList_1:someRequiredField" for the second, and so on. But 
> > in 
> > > > the rendering of the javascript by the struts validatorScript tag, the 
> > > > clientId of the input components lose their row index. 
> > > > 
> > > > I have created an illustrative example that generates the same 
> > problem. The 
> > > > code is included below and the inline comments hopefully explain 
> > what's 
> > > > happening. To keep things simple there is no backing bean, and I use a 
> > > > class from shale-core to give me some objects to edit, so all you'd 
> > just 
> > > > need to deploy into a shale-core based "blank" web-app. My application 
> > page 
> > > > is more complex than this but I am running into exact the same problem 
> > > > withthe validation javascript 
> > > > 
> > > > Does this look familiar to anyone? Any workarounds, solutions?... 
> > > > 
> > > > Thanks 
> > > > -- Paul Devine 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > > > rowIndexVar="index"> 
> > > > 
> > > > 
> > > > > > required="true"> 
> > > > > > client="true"/> 
> > > > > > errorClass="errorMessage"/> 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > 
> > > 
> > > - 
> > > To unsubscribe, e-mail: [EMAIL PROTECTED] 
> > >

Re: SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Paul Devine
I will create the bug and attach the example code. Thanks for all your help.

If anyone can think of a short term workaround, maybe even a javascript hack
I can fit in myself, that would be great too :-)

-- Paul

On 3/29/06, Gary VanMatre <[EMAIL PROTECTED]> wrote:
>
> >From: Laurie Harper <[EMAIL PROTECTED]>
> >
> > Why would that be needed? The s:commonsValidator tag should render
> > Javascript referencing the actual rendered ID of the component it's
> > attached to. I haven't played much with validators, much less validators
> > for components inside dataLists, but I would have thought this should be
> > able to work as it is.
> >
>
> I think this one is a bug.  The dataList component is a naming container
> so any components contained in it, should get a clientId prefix from all
> naming containers that it's nested in.  The dataList extends the UIData
> component who creates it's client id from the current row.
>
> public String getClientId(FacesContext context)
> {
>   String clientId = super.getClientId(context);
>   int rowIndex = getRowIndex();
>   if (rowIndex == -1)
>   {
>return clientId;
>   }
>   else
>   {
>return clientId + "_" + rowIndex;
>   }
> }
>
> The validator script collector asks the components with the commons
> validator for their client id after the dataList has done it's renderering
> which renderers it's own children.
>
> I want to say that JSF 1.2 adds a callback to handle this but I don't
> understand the details yet.
>
> Paul, please create a bugzilla ticket on this one.
>
> Gary
>
> > Paul, could you include your sample JSP and, if possible, copy/paste the
> > rendered HTML as well, in a Bugzilla ticket so the issue gets tracked?
> >
> > L.
> >
> > Hermod Opstvedt wrote:
> > > Hi
> > >
> > > Did I hear forceId? - You need to use this attribute to force the name
> to be
> > > what you want.
> > >
> > > Hermod
> > >
> > >
> > > -Opprinnelig melding-
> > > Fra: Paul Devine [mailto:[EMAIL PROTECTED]
> > > Sendt: 29. mars 2006 22:47
> > > Til: user@struts.apache.org
> > > Emne: [Shale] commons client side validation not working inside a
> dataList
> > >
> > > I tried using the commons validation features of Shale. The
> application is
> > > using Myfaces 1.1.1. The validation javascript is being written back
> to the
> > > browser. The server side validation is working fine but a javascript
> `field
> > > error occurs during the . However there is a problem with the client
> side
> > > input element Id's that the javascript validation is looking for
> versus the
> > > client side id's that are generated by the dataList. The page i tried
> > > validation on has a Myfaces dataList inside a form, and for each
> iteration
> > > through the list there are inputs. Basically a dataList will append
> the `row
> > > index` to the client side Id to guarantee uniqueness, as in
> > > "myForm:myDataList_0:someRequiredField" for the first row,
> > > "myForm:myDataList_1:someRequiredField" for the second, and so on. But
> in
> > > the rendering of the javascript by the struts validatorScript tag, the
> > > clientId of the input components lose their row index.
> > >
> > > I have created an illustrative example that generates the same
> problem. The
> > > code is included below and the inline comments hopefully explain
> what's
> > > happening. To keep things simple there is no backing bean, and I use a
> > > class from shale-core to give me some objects to edit, so all you'd
> just
> > > need to deploy into a shale-core based "blank" web-app. My application
> page
> > > is more complex than this but I am running into exact the same problem
> > > withthe validation javascript
> > >
> > > Does this look familiar to anyone? Any workarounds, solutions?...
> > >
> > > Thanks
> > > -- Paul Devine
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > > > rowIndexVar="index">
> > >
> > >
> > > > > required="true">
> > > > > client="true"/>
> > > > > errorClass="errorMessage"/>
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> > -
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>


Re: SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Gary VanMatre
>From: Laurie Harper <[EMAIL PROTECTED]> 
>
> Why would that be needed? The s:commonsValidator tag should render 
> Javascript referencing the actual rendered ID of the component it's 
> attached to. I haven't played much with validators, much less validators 
> for components inside dataLists, but I would have thought this should be 
> able to work as it is. 
>

I think this one is a bug.  The dataList component is a naming container so any 
components contained in it, should get a clientId prefix from all naming 
containers that it's nested in.  The dataList extends the UIData component who 
creates it's client id from the current row.  

 public String getClientId(FacesContext context)
 {
  String clientId = super.getClientId(context);
  int rowIndex = getRowIndex();
  if (rowIndex == -1)
  {
   return clientId;
  }
  else
  {
   return clientId + "_" + rowIndex;
  }
 } 

The validator script collector asks the components with the commons validator 
for their client id after the dataList has done it's renderering which 
renderers it's own children.

I want to say that JSF 1.2 adds a callback to handle this but I don't 
understand the details yet.  

Paul, please create a bugzilla ticket on this one.

Gary 
 
> Paul, could you include your sample JSP and, if possible, copy/paste the 
> rendered HTML as well, in a Bugzilla ticket so the issue gets tracked? 
> 
> L. 
> 
> Hermod Opstvedt wrote: 
> > Hi 
> > 
> > Did I hear forceId? - You need to use this attribute to force the name to 
> > be 
> > what you want. 
> > 
> > Hermod 
> > 
> > 
> > -Opprinnelig melding- 
> > Fra: Paul Devine [mailto:[EMAIL PROTECTED] 
> > Sendt: 29. mars 2006 22:47 
> > Til: user@struts.apache.org 
> > Emne: [Shale] commons client side validation not working inside a dataList 
> > 
> > I tried using the commons validation features of Shale. The application is 
> > using Myfaces 1.1.1. The validation javascript is being written back to the 
> > browser. The server side validation is working fine but a javascript `field 
> > error occurs during the . However there is a problem with the client side 
> > input element Id's that the javascript validation is looking for versus the 
> > client side id's that are generated by the dataList. The page i tried 
> > validation on has a Myfaces dataList inside a form, and for each iteration 
> > through the list there are inputs. Basically a dataList will append the 
> > `row 
> > index` to the client side Id to guarantee uniqueness, as in 
> > "myForm:myDataList_0:someRequiredField" for the first row, 
> > "myForm:myDataList_1:someRequiredField" for the second, and so on. But in 
> > the rendering of the javascript by the struts validatorScript tag, the 
> > clientId of the input components lose their row index. 
> > 
> > I have created an illustrative example that generates the same problem. The 
> > code is included below and the inline comments hopefully explain what's 
> > happening. To keep things simple there is no backing bean, and I use a 
> > class from shale-core to give me some objects to edit, so all you'd just 
> > need to deploy into a shale-core based "blank" web-app. My application page 
> > is more complex than this but I am running into exact the same problem 
> > withthe validation javascript 
> > 
> > Does this look familiar to anyone? Any workarounds, solutions?... 
> > 
> > Thanks 
> > -- Paul Devine 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > > > rowIndexVar="index"> 
> > 
> > 
> > > > required="true"> 
> > > > client="true"/> 
> > > > errorClass="errorMessage"/> 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> 
> 
> - 
> To unsubscribe, e-mail: [EMAIL PROTECTED] 
> For additional commands, e-mail: [EMAIL PROTECTED] 
> 

SV: SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Hermod Opstvedt
Hi

I seem to remember that this issue has come up on the myfaces list, and that
the solution was to use forceId. 

Hermod


-Opprinnelig melding-
Fra: news [mailto:[EMAIL PROTECTED] På vegne av Laurie Harper
Sendt: 30. mars 2006 00:07
Til: user@struts.apache.org
Emne: Re: SV: [Shale] commons client side validation not working inside a
dataList

Why would that be needed? The s:commonsValidator tag should render 
Javascript referencing the actual rendered ID of the component it's 
attached to. I haven't played much with validators, much less validators 
for components inside dataLists, but I would have thought this should be 
able to work as it is.

Paul, could you include your sample JSP and, if possible, copy/paste the 
rendered HTML as well, in a Bugzilla ticket so the issue gets tracked?

L.

Hermod Opstvedt wrote:
> Hi
> 
> Did I hear forceId? - You need to use this attribute to force the name to
be
> what you want.
> 
> Hermod
> 
> 
> -Opprinnelig melding-
> Fra: Paul Devine [mailto:[EMAIL PROTECTED] 
> Sendt: 29. mars 2006 22:47
> Til: user@struts.apache.org
> Emne: [Shale] commons client side validation not working inside a dataList
> 
> I tried using the commons validation features of Shale. The application is
> using Myfaces 1.1.1.  The validation javascript is being written back to
the
> browser.  The server side validation is working fine but a javascript
`field
> error occurs during the .  However there is a problem with the client side
> input element Id's that the javascript validation is looking for versus
the
> client side id's that are generated by the dataList. The page i tried
> validation on has a Myfaces dataList inside a form, and for each iteration
> through the list there are inputs. Basically a dataList will append the
`row
> index` to the client side Id to guarantee uniqueness, as in
> "myForm:myDataList_0:someRequiredField" for the first row,
> "myForm:myDataList_1:someRequiredField" for the second, and so on. But in
> the rendering of the javascript by the struts validatorScript tag, the
> clientId of the input components lose their row index.
> 
> I have created an illustrative example that generates the same problem.
The
> code is included below and the inline comments hopefully explain what's
> happening.  To keep things simple there is no backing bean, and I use a
> class from shale-core to give me some objects to edit, so all you'd just
> need to deploy into a shale-core based "blank" web-app. My application
page
> is more complex than this but I am running into exact the same problem
> withthe validation javascript
> 
> Does this look familiar to anyone? Any workarounds, solutions?...
> 
> Thanks
> -- Paul Devine
> 
> <%@ page language="java" import="java.util.*,
> org.apache.shale.dialog.impl.DialogImpl"%>
> <%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" %>
> <%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" %>
> <%@ taglib uri="http://myfaces.apache.org/extensions"; prefix="t"%>
> <%@ taglib uri="http://struts.apache.org/shale/core"; prefix="s" %>
> <%
> /* Put a couple of Shale DialogImpl objects into the session (we just need
> an object with a getter and a setter
>  * and this class is readily accessible)
>  */
> List inputObjects = new ArrayList();
> inputObjects.add(new DialogImpl());
> inputObjects.add(new DialogImpl());
> session.setAttribute("someInputObjects",inputObjects);
> %>
> 
> <%--
> A form with a dataList of inputs. The client side id's of the components
> will be
> someForm:someDataList_0:someRequiredField and
> someForm:someDataList_1:someRequiredField
> --%>
> 
>rowIndexVar="index">
> 
> 
>  required="true">
>client="true"/>
>  errorClass="errorMessage"/>
> 
>   
> <%--
> The dataList is now closed. Before we close out the form, write out the
> validator javascript. But
> this results in a mismatch on the client side id's in the required
function.
> Note the uniqueness
> indexes _0 and _1 are missing. Because we are outside the
> dataList there is no "row index" anymore (and for some reason the
> HtmlInputText components `calculate`
> their clientId's again when asked for getClientId from Shale's
> ValidatorScript findCommonsValidators method
> Here's what the validatorScript comes up with:-
> function required() {
>   this[0] = new Array("someForm:someDataList:someRequiredField", "Name is
> required.", new Function("x", "return {}[x];"));
> }
> --%>
>   
>   
> 
> 


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Laurie Harper
Why would that be needed? The s:commonsValidator tag should render 
Javascript referencing the actual rendered ID of the component it's 
attached to. I haven't played much with validators, much less validators 
for components inside dataLists, but I would have thought this should be 
able to work as it is.


Paul, could you include your sample JSP and, if possible, copy/paste the 
rendered HTML as well, in a Bugzilla ticket so the issue gets tracked?


L.

Hermod Opstvedt wrote:

Hi

Did I hear forceId? - You need to use this attribute to force the name to be
what you want.

Hermod


-Opprinnelig melding-
Fra: Paul Devine [mailto:[EMAIL PROTECTED] 
Sendt: 29. mars 2006 22:47

Til: user@struts.apache.org
Emne: [Shale] commons client side validation not working inside a dataList

I tried using the commons validation features of Shale. The application is
using Myfaces 1.1.1.  The validation javascript is being written back to the
browser.  The server side validation is working fine but a javascript `field
error occurs during the .  However there is a problem with the client side
input element Id's that the javascript validation is looking for versus the
client side id's that are generated by the dataList. The page i tried
validation on has a Myfaces dataList inside a form, and for each iteration
through the list there are inputs. Basically a dataList will append the `row
index` to the client side Id to guarantee uniqueness, as in
"myForm:myDataList_0:someRequiredField" for the first row,
"myForm:myDataList_1:someRequiredField" for the second, and so on. But in
the rendering of the javascript by the struts validatorScript tag, the
clientId of the input components lose their row index.

I have created an illustrative example that generates the same problem. The
code is included below and the inline comments hopefully explain what's
happening.  To keep things simple there is no backing bean, and I use a
class from shale-core to give me some objects to edit, so all you'd just
need to deploy into a shale-core based "blank" web-app. My application page
is more complex than this but I am running into exact the same problem
withthe validation javascript

Does this look familiar to anyone? Any workarounds, solutions?...

Thanks
-- Paul Devine

<%@ page language="java" import="java.util.*,
org.apache.shale.dialog.impl.DialogImpl"%>
<%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/extensions"; prefix="t"%>
<%@ taglib uri="http://struts.apache.org/shale/core"; prefix="s" %>
<%
/* Put a couple of Shale DialogImpl objects into the session (we just need
an object with a getter and a setter
 * and this class is readily accessible)
 */
List inputObjects = new ArrayList();
inputObjects.add(new DialogImpl());
inputObjects.add(new DialogImpl());
session.setAttribute("someInputObjects",inputObjects);
%>

<%--
A form with a dataList of inputs. The client side id's of the components
will be
someForm:someDataList_0:someRequiredField and
someForm:someDataList_1:someRequiredField
--%>

  



  


  
<%--
The dataList is now closed. Before we close out the form, write out the
validator javascript. But
this results in a mismatch on the client side id's in the required function.
Note the uniqueness
indexes _0 and _1 are missing. Because we are outside the
dataList there is no "row index" anymore (and for some reason the
HtmlInputText components `calculate`
their clientId's again when asked for getClientId from Shale's
ValidatorScript findCommonsValidators method
Here's what the validatorScript comes up with:-
function required() {
  this[0] = new Array("someForm:someDataList:someRequiredField", "Name is
required.", new Function("x", "return {}[x];"));
}
--%>
  
  





-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



SV: [Shale] commons client side validation not working inside a dataList

2006-03-29 Thread Hermod Opstvedt
Hi

Did I hear forceId? - You need to use this attribute to force the name to be
what you want.

Hermod


-Opprinnelig melding-
Fra: Paul Devine [mailto:[EMAIL PROTECTED] 
Sendt: 29. mars 2006 22:47
Til: user@struts.apache.org
Emne: [Shale] commons client side validation not working inside a dataList

I tried using the commons validation features of Shale. The application is
using Myfaces 1.1.1.  The validation javascript is being written back to the
browser.  The server side validation is working fine but a javascript `field
error occurs during the .  However there is a problem with the client side
input element Id's that the javascript validation is looking for versus the
client side id's that are generated by the dataList. The page i tried
validation on has a Myfaces dataList inside a form, and for each iteration
through the list there are inputs. Basically a dataList will append the `row
index` to the client side Id to guarantee uniqueness, as in
"myForm:myDataList_0:someRequiredField" for the first row,
"myForm:myDataList_1:someRequiredField" for the second, and so on. But in
the rendering of the javascript by the struts validatorScript tag, the
clientId of the input components lose their row index.

I have created an illustrative example that generates the same problem. The
code is included below and the inline comments hopefully explain what's
happening.  To keep things simple there is no backing bean, and I use a
class from shale-core to give me some objects to edit, so all you'd just
need to deploy into a shale-core based "blank" web-app. My application page
is more complex than this but I am running into exact the same problem
withthe validation javascript

Does this look familiar to anyone? Any workarounds, solutions?...

Thanks
-- Paul Devine

<%@ page language="java" import="java.util.*,
org.apache.shale.dialog.impl.DialogImpl"%>
<%@ taglib uri="http://java.sun.com/jsf/html"; prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core"; prefix="f" %>
<%@ taglib uri="http://myfaces.apache.org/extensions"; prefix="t"%>
<%@ taglib uri="http://struts.apache.org/shale/core"; prefix="s" %>
<%
/* Put a couple of Shale DialogImpl objects into the session (we just need
an object with a getter and a setter
 * and this class is readily accessible)
 */
List inputObjects = new ArrayList();
inputObjects.add(new DialogImpl());
inputObjects.add(new DialogImpl());
session.setAttribute("someInputObjects",inputObjects);
%>

<%--
A form with a dataList of inputs. The client side id's of the components
will be
someForm:someDataList_0:someRequiredField and
someForm:someDataList_1:someRequiredField
--%>

  



  


  
<%--
The dataList is now closed. Before we close out the form, write out the
validator javascript. But
this results in a mismatch on the client side id's in the required function.
Note the uniqueness
indexes _0 and _1 are missing. Because we are outside the
dataList there is no "row index" anymore (and for some reason the
HtmlInputText components `calculate`
their clientId's again when asked for getClientId from Shale's
ValidatorScript findCommonsValidators method
Here's what the validatorScript comes up with:-
function required() {
  this[0] = new Array("someForm:someDataList:someRequiredField", "Name is
required.", new Function("x", "return {}[x];"));
}
--%>
  
  




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]