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);
%
f:view
%--
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
--%
h:form id=someForm onsubmit=return validateForm(this);
  t:dataList id=someDataList value=#{someInputObjects} var=object
rowIndexVar=index

h:outputLabel value=Name/
h:inputText id=someRequiredField value=#{object.name} size=20
required=true
  s:commonsValidator type=required arg=Name server=true
client=true/
/h:inputTexth:message for=someRequiredField
errorClass=errorMessage/

  /t:dataList
%--
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];));
}
--%
  s:validatorScript functionName=validateForm/
  h:commandButton action=submit/
/h:form
/f:view


-
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);
%
f:view
%--
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
--%
h:form id=someForm onsubmit=return validateForm(this);
  t:dataList id=someDataList value=#{someInputObjects} var=object
rowIndexVar=index

h:outputLabel value=Name/
h:inputText id=someRequiredField value=#{object.name} size=20
required=true
  s:commonsValidator type=required arg=Name server=true
client=true/
/h:inputTexth:message for=someRequiredField
errorClass=errorMessage/

  /t:dataList
%--
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];));
}
--%
  s:validatorScript functionName=validateForm/
  h:commandButton action=submit/
/h:form
/f:view



-
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);
 %
 f:view
 %--
 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
 --%
 h:form id=someForm onsubmit=return validateForm(this);
   t:dataList id=someDataList value=#{someInputObjects} var=object
 rowIndexVar=index
 
 h:outputLabel value=Name/
 h:inputText id=someRequiredField value=#{object.name} size=20
 required=true
   s:commonsValidator type=required arg=Name server=true
 client=true/
 /h:inputTexth:message for=someRequiredField
 errorClass=errorMessage/
 
   /t:dataList
 %--
 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];));
 }
 --%
   s:validatorScript functionName=validateForm/
   h:commandButton action=submit/
 /h:form
 /f:view


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


-
To unsubscribe, 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] 
 

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: 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] 
   For additional commands, e-mail: [EMAIL PROTECTED]