RE: [Shale Clay]

2008-04-11 Thread Richard Eggert
Yes.  Basically, you would have to define a component that inherits from 
h:dataTable, and give it child elements that inherit from h:column.  Each of 
those child elements would then contain children that make up the content of 
your columns.

Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com



-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Fri 4/11/2008 12:08 AM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
 
Thanks a lot Rich. I was able to use your first example without having
any white space issue even if I reformatted it a bit. If I want to use
the second solution, how would I define the behavior of the dataTable?
Would it still need to inherit dataTable for the looping capability
since the number of rows are dynamic?  

-Original Message-
From: Richard Eggert [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 10, 2008 5:12 PM
To: user@shale.apache.org
Subject: RE: [Shale Clay]

My experience with dataTables and clay has been that they don't get
along very well, at least in the case of HTML templates (XML templates
are another story).  This is mainly because h:dataTable has a
drastically different structure from HTML tables.  h:dataTable expects
to have h:columns as its immediate child (with optional tags for header
and footer rows nested within each column), whereas HTML TABLE tags
expect to have TR (row) tags as its children (or TR tags nested within a
TBODY), with the column (TD) tags nested within each row.  Essentially,
from the point of view of an h:dataTable, a column contains rows, but in
an HTML TABLE, a row contains columns, which makes mapping between the
two extremely difficult.  It can be done, but it involves making a lot
of dummy jsfid=void tags and using SPAN tags to cause elements that
wouldn't be visible in the mockup to be rendered at runtime.

e.g.,

table jsfid=h:dataTable var=foo value=#{bar.list}
tr jsfid=void allowBody=false
   thMock Heading/th
/trtr jsfid=void
   td jsfid=h:column
 #{foo.name}
 span jsfid=h:outputText value=Real Heading
facetName=header/span
  /td
   /tr
/table

Note that the lack of whitespace around the TR elements is intentional
to avoid (blank) text elements winding up as children of the h:dataTable
component (which is very nasty and breaks everything!).

As you can see, writing an HTML template for a dataTable gets extremely
ugly very quickly.  For this reason, I don't recommend doing it unless
you REALLY want to be able to view the mockup in a browser before
deploying it.  You're better off defining the template in XML and just
referring to it in the parent template, e.g.,

table jsfid=my:customtable allowBody=false
   Table goes here.
/table


What we really need is a new JSF component that provides the same
capabilities as dataTable but is structured more like HTML TABLE tags.



Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com



-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Thu 4/10/2008 2:22 PM
To: user@shale.apache.org
Subject: FW: [Shale Clay]
 
I couldn't seem to understand by looking at the clay usecase example.
Can somebody post a simple example of using clay to generate a dynamic
data table, the equivalent of the JSF h:dataTable tag? 
 






Re: Need to escape special characters in Shale validator script

2008-04-11 Thread Gary VanMatre
You might try wrapping the script in a CDATA before trying to escape the JS.

![CDATA[ 
script 
  
/script 
]]





 -- Original message --
From: Jeff Tsay [EMAIL PROTECTED]
 Hi,
 
 I'm trying to use Shale validator with xulfaces. (XUL is a user 
 interface language that is a type of XML) The first problem I'm having 
 is that
 
 val:validatorScript functionName=validateForm/
 is encoded as follows:
 
 script type=text/javascript language=Javascript1.1
 function _required() { 
 this[0] = new Array(j_id_id32, null is required., new Function(x, 
 return 
 {}[x];));
 }
 var bCancel = false;
 function validateForm(form) {
 var bValid = true;
 var sFormName = jcv_retrieveFormName(form);
 if ((bValid  !bCancel  ( == sFormName))) {
 bValid = (validateRequired(form));
 
 }
 return bValid;
 }
 
 ...
 
 
 Note the . When I load this page in Firefox, it complains that  is 
 not valid XML, which it is not. It should be escaped to amp;amp;. I 
 guess because HTML browsers allow special characters like  in side 
 script tags, this problem wasn't caught previously. I guess if the 
 script appeared in an XHTML document, and a browser was strict, this 
 problem could show up too.
 
 So I was trying to fix this problem and looking at 
 org.apache.shale.validator.faces.ValidatorScript.writeValidationFunctions(). 
 It looks like the script text is written here with 
 ResponseWriter.write(). The problem is ResponseWrite.write() doesn't 
 escape the characters as ResponseWriter.writeText() does. However, 
 writeText() won't work since it closes any open tags (in this case 
 script). So we need to escape ourselves. The trouble is, how do we 
 know how to escape the characters? I was thinking of using 
 org.apache.commons.lang.StringEscapeUtils.escapeXml() and escapeHtml(), 
 but how can we determine what the content type we are outputting is? If 
 we knew, I guess we could then create a WrappedResponseWriter that 
 overloads write(String) ...
 
 Thanks,
 
 Jeff



RE: [Shale Clay]

2008-04-11 Thread Zheng, Xiahong
Thanks again. I have another question. How does shale work with
fileload? I am trying to use t:fileUpload from tomahawk. I copied the
component definition into my clay-config.xml

component jsfid=t:inputFileUpload
componentType=org.apache.myfaces.HtmlInputFileUpload
extends=baseOutput
attributes
set name=id bindingType=VB /
.
  /attributes
/component

And I added the following in my html form

form enctype=multipart/form-data

input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
storage=file /

input type=submit action=#{mybean.getQuotes} value=Get Quotes/

/form

When I hit the submit button, action method is never invoked.
Interestingly, if I remove the enctype attribute, action method is
indeed invoked but the input is null which is expected. I have the
extension filter configured.

Any idea? 

 

-Original Message-
From: Richard Eggert [mailto:[EMAIL PROTECTED] 
Sent: Friday, April 11, 2008 7:33 AM
To: user@shale.apache.org
Subject: RE: [Shale Clay]

Yes.  Basically, you would have to define a component that inherits from
h:dataTable, and give it child elements that inherit from h:column.
Each of those child elements would then contain children that make up
the content of your columns.

Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com



-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Fri 4/11/2008 12:08 AM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
 
Thanks a lot Rich. I was able to use your first example without having
any white space issue even if I reformatted it a bit. If I want to use
the second solution, how would I define the behavior of the dataTable?
Would it still need to inherit dataTable for the looping capability
since the number of rows are dynamic?  

-Original Message-
From: Richard Eggert [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 10, 2008 5:12 PM
To: user@shale.apache.org
Subject: RE: [Shale Clay]

My experience with dataTables and clay has been that they don't get
along very well, at least in the case of HTML templates (XML templates
are another story).  This is mainly because h:dataTable has a
drastically different structure from HTML tables.  h:dataTable expects
to have h:columns as its immediate child (with optional tags for header
and footer rows nested within each column), whereas HTML TABLE tags
expect to have TR (row) tags as its children (or TR tags nested within a
TBODY), with the column (TD) tags nested within each row.  Essentially,
from the point of view of an h:dataTable, a column contains rows, but in
an HTML TABLE, a row contains columns, which makes mapping between the
two extremely difficult.  It can be done, but it involves making a lot
of dummy jsfid=void tags and using SPAN tags to cause elements that
wouldn't be visible in the mockup to be rendered at runtime.

e.g.,

table jsfid=h:dataTable var=foo value=#{bar.list}
tr jsfid=void allowBody=false
   thMock Heading/th
/trtr jsfid=void
   td jsfid=h:column
 #{foo.name}
 span jsfid=h:outputText value=Real Heading
facetName=header/span
  /td
   /tr
/table

Note that the lack of whitespace around the TR elements is intentional
to avoid (blank) text elements winding up as children of the h:dataTable
component (which is very nasty and breaks everything!).

As you can see, writing an HTML template for a dataTable gets extremely
ugly very quickly.  For this reason, I don't recommend doing it unless
you REALLY want to be able to view the mockup in a browser before
deploying it.  You're better off defining the template in XML and just
referring to it in the parent template, e.g.,

table jsfid=my:customtable allowBody=false
   Table goes here.
/table


What we really need is a new JSF component that provides the same
capabilities as dataTable but is structured more like HTML TABLE tags.



Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com



-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Thu 4/10/2008 2:22 PM
To: user@shale.apache.org
Subject: FW: [Shale Clay]
 
I couldn't seem to understand by looking at the clay usecase example.
Can somebody post a simple example of using clay to generate a dynamic
data table, the equivalent of the JSF h:dataTable tag? 
 







RE: [Shale Clay]

2008-04-11 Thread Gary VanMatre
From: Zheng, Xiahong [EMAIL PROTECTED]
 Thanks again. I have another question. How does shale work with
 fileload? I am trying to use t:fileUpload from tomahawk. I copied the
 component definition into my clay-config.xml
 
 component jsfid=t:inputFileUpload
   componentType=org.apache.myfaces.HtmlInputFileUpload
   extends=baseOutput
   attributes
   set name=id bindingType=VB /
   .
   /attributes
 /component
 
 And I added the following in my html form
 
 form enctype=multipart/form-data
 
 input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
 storage=file /
 
 input type=submit action=#{mybean.getQuotes} value=Get Quotes/
 
 /form
 
 When I hit the submit button, action method is never invoked.
 Interestingly, if I remove the enctype attribute, action method is
 indeed invoked but the input is null which is expected. I have the
 extension filter configured.
 
 Any idea? 


This is just a guess but you might try using the tomahawk form component too.  
There might be some component coupling that is assumed in the library.

Gary
 
  
 
 -Original Message-
 From: Richard Eggert [mailto:[EMAIL PROTECTED] 
 Sent: Friday, April 11, 2008 7:33 AM
 To: user@shale.apache.org
 Subject: RE: [Shale Clay]
 
 Yes.  Basically, you would have to define a component that inherits from
 h:dataTable, and give it child elements that inherit from h:column.
 Each of those child elements would then contain children that make up
 the content of your columns.
 
 Rich Eggert
 Member of Technical Staff
 Proteus Technologies, LLC
 http://www.proteus-technologies.com
 
 
 
 -Original Message-
 From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
 Sent: Fri 4/11/2008 12:08 AM
 To: user@shale.apache.org
 Subject: RE: [Shale Clay]
  
 Thanks a lot Rich. I was able to use your first example without having
 any white space issue even if I reformatted it a bit. If I want to use
 the second solution, how would I define the behavior of the dataTable?
 Would it still need to inherit dataTable for the looping capability
 since the number of rows are dynamic?  
 
 -Original Message-
 From: Richard Eggert [mailto:[EMAIL PROTECTED] 
 Sent: Thursday, April 10, 2008 5:12 PM
 To: user@shale.apache.org
 Subject: RE: [Shale Clay]
 
 My experience with dataTables and clay has been that they don't get
 along very well, at least in the case of HTML templates (XML templates
 are another story).  This is mainly because h:dataTable has a
 drastically different structure from HTML tables.  h:dataTable expects
 to have h:columns as its immediate child (with optional tags for header
 and footer rows nested within each column), whereas HTML TABLE tags
 expect to have TR (row) tags as its children (or TR tags nested within a
 TBODY), with the column (TD) tags nested within each row.  Essentially,
 from the point of view of an h:dataTable, a column contains rows, but in
 an HTML TABLE, a row contains columns, which makes mapping between the
 two extremely difficult.  It can be done, but it involves making a lot
 of dummy jsfid=void tags and using SPAN tags to cause elements that
 wouldn't be visible in the mockup to be rendered at runtime.
 
 e.g.,
 
 table jsfid=h:dataTable var=foo value=#{bar.list}
 tr jsfid=void allowBody=false
thMock Heading/th
 /trtr jsfid=void
td jsfid=h:column
  #{foo.name}
  span jsfid=h:outputText value=Real Heading
 facetName=header/span
   /td
/tr
 /table
 
 Note that the lack of whitespace around the TR elements is intentional
 to avoid (blank) text elements winding up as children of the h:dataTable
 component (which is very nasty and breaks everything!).
 
 As you can see, writing an HTML template for a dataTable gets extremely
 ugly very quickly.  For this reason, I don't recommend doing it unless
 you REALLY want to be able to view the mockup in a browser before
 deploying it.  You're better off defining the template in XML and just
 referring to it in the parent template, e.g.,
 
 table jsfid=my:customtable allowBody=false
Table goes here.
 /table
 
 
 What we really need is a new JSF component that provides the same
 capabilities as dataTable but is structured more like HTML TABLE tags.
 
 
 
 Rich Eggert
 Member of Technical Staff
 Proteus Technologies, LLC
 http://www.proteus-technologies.com
 
 
 
 -Original Message-
 From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
 Sent: Thu 4/10/2008 2:22 PM
 To: user@shale.apache.org
 Subject: FW: [Shale Clay]
  
 I couldn't seem to understand by looking at the clay usecase example.
 Can somebody post a simple example of using clay to generate a dynamic
 data table, the equivalent of the JSF h:dataTable tag? 
  
 
 
 
 
 



Re: [Shale Clay]

2008-04-11 Thread Ryan Wynn
On Fri, Apr 11, 2008 at 2:50 PM, Zheng, Xiahong [EMAIL PROTECTED] wrote:
 I thought about this, but tomahawk doesn't seem to have a form
  component.



  -Original Message-
  From: Gary VanMatre [mailto:[EMAIL PROTECTED]
  Sent: Friday, April 11, 2008 1:35 PM
  To: user@shale.apache.org
  Subject: RE: [Shale Clay]

  From: Zheng, Xiahong [EMAIL PROTECTED]
   Thanks again. I have another question. How does shale work with
   fileload? I am trying to use t:fileUpload from tomahawk. I copied the
   component definition into my clay-config.xml
  
   component jsfid=t:inputFileUpload
 componentType=org.apache.myfaces.HtmlInputFileUpload
 extends=baseOutput
 attributes
 set name=id bindingType=VB /
 .
 /attributes
   /component
  
   And I added the following in my html form
  
   form enctype=multipart/form-data
  
   input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
   storage=file /
  
   input type=submit action=#{mybean.getQuotes} value=Get Quotes/
  
   /form
  
   When I hit the submit button, action method is never invoked.
   Interestingly, if I remove the enctype attribute, action method is
   indeed invoked but the input is null which is expected. I have the
   extension filter configured.
  
   Any idea?
  

Can you try this?

component jsfid=multipart-form extends=form
   attributes
 set name=enctype value=multipart/form-data/
   /attributes
/component

+

form jsfid=multipart-form/form

That seems to be working ok for me.

Ryan

  This is just a guess but you might try using the tomahawk form component
  too.  There might be some component coupling that is assumed in the
  library.

  Gary

  
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Friday, April 11, 2008 7:33 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Yes.  Basically, you would have to define a component that inherits
  from
   h:dataTable, and give it child elements that inherit from h:column.
   Each of those child elements would then contain children that make up
   the content of your columns.
  
   Rich Eggert
   Member of Technical Staff
   Proteus Technologies, LLC
   http://www.proteus-technologies.com
  
  
  
   -Original Message-
   From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
   Sent: Fri 4/11/2008 12:08 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Thanks a lot Rich. I was able to use your first example without having
   any white space issue even if I reformatted it a bit. If I want to use
   the second solution, how would I define the behavior of the dataTable?
   Would it still need to inherit dataTable for the looping capability
   since the number of rows are dynamic?
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Thursday, April 10, 2008 5:12 PM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   My experience with dataTables and clay has been that they don't get
   along very well, at least in the case of HTML templates (XML templates
   are another story).  This is mainly because h:dataTable has a
   drastically different structure from HTML tables.  h:dataTable expects
   to have h:columns as its immediate child (with optional tags for
  header
   and footer rows nested within each column), whereas HTML TABLE tags
   expect to have TR (row) tags as its children (or TR tags nested within
  a
   TBODY), with the column (TD) tags nested within each row.
  Essentially,
   from the point of view of an h:dataTable, a column contains rows, but
  in
   an HTML TABLE, a row contains columns, which makes mapping between the
   two extremely difficult.  It can be done, but it involves making a lot
   of dummy jsfid=void tags and using SPAN tags to cause elements that
   wouldn't be visible in the mockup to be rendered at runtime.
  
   e.g.,
  
   table jsfid=h:dataTable var=foo value=#{bar.list}
   tr jsfid=void allowBody=false
  thMock Heading/th
   /trtr jsfid=void
  td jsfid=h:column
#{foo.name}
span jsfid=h:outputText value=Real Heading
   facetName=header/span
 /td
  /tr
   /table
  
   Note that the lack of whitespace around the TR elements is intentional
   to avoid (blank) text elements winding up as children of the
  h:dataTable
   component (which is very nasty and breaks everything!).
  
   As you can see, writing an HTML template for a dataTable gets
  extremely
   ugly very quickly.  For this reason, I don't recommend doing it unless
   you REALLY want to be able to view the mockup in a browser before
   deploying it.  You're better off defining the template in XML and just
   referring to it in the parent template, e.g.,
  
   table jsfid=my:customtable allowBody=false
  Table goes here.
   /table
  
  
   What we really need is a new JSF component that provides the same
   capabilities as dataTable but is structured 

RE: [Shale Clay]

2008-04-11 Thread Zheng, Xiahong
I tried it and didn't seem to make a difference; it doesn't invoke the
action. It's really weird; without the enctype attribute, it at least
invokes the action; I suspect on postback, JSF doesn't restore the view
correctly because if I change my javax.faces.STATE_SAVING_METHOD from
client to server, I see

~com.sun.faces.saveStateFieldMarker~

at the bottom of the page.

-Original Message-
From: Ryan Wynn [mailto:[EMAIL PROTECTED] 
Sent: Friday, April 11, 2008 3:12 PM
To: user@shale.apache.org
Subject: Re: [Shale Clay]

On Fri, Apr 11, 2008 at 2:50 PM, Zheng, Xiahong [EMAIL PROTECTED]
wrote:
 I thought about this, but tomahawk doesn't seem to have a form
  component.



  -Original Message-
  From: Gary VanMatre [mailto:[EMAIL PROTECTED]
  Sent: Friday, April 11, 2008 1:35 PM
  To: user@shale.apache.org
  Subject: RE: [Shale Clay]

  From: Zheng, Xiahong [EMAIL PROTECTED]
   Thanks again. I have another question. How does shale work with
   fileload? I am trying to use t:fileUpload from tomahawk. I copied
the
   component definition into my clay-config.xml
  
   component jsfid=t:inputFileUpload
 componentType=org.apache.myfaces.HtmlInputFileUpload
 extends=baseOutput
 attributes
 set name=id bindingType=VB /
 .
 /attributes
   /component
  
   And I added the following in my html form
  
   form enctype=multipart/form-data
  
   input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
   storage=file /
  
   input type=submit action=#{mybean.getQuotes} value=Get
Quotes/
  
   /form
  
   When I hit the submit button, action method is never invoked.
   Interestingly, if I remove the enctype attribute, action method
is
   indeed invoked but the input is null which is expected. I have the
   extension filter configured.
  
   Any idea?
  

Can you try this?

component jsfid=multipart-form extends=form
   attributes
 set name=enctype value=multipart/form-data/
   /attributes
/component

+

form jsfid=multipart-form/form

That seems to be working ok for me.

Ryan

  This is just a guess but you might try using the tomahawk form
component
  too.  There might be some component coupling that is assumed in the
  library.

  Gary

  
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Friday, April 11, 2008 7:33 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Yes.  Basically, you would have to define a component that inherits
  from
   h:dataTable, and give it child elements that inherit from h:column.
   Each of those child elements would then contain children that make
up
   the content of your columns.
  
   Rich Eggert
   Member of Technical Staff
   Proteus Technologies, LLC
   http://www.proteus-technologies.com
  
  
  
   -Original Message-
   From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
   Sent: Fri 4/11/2008 12:08 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Thanks a lot Rich. I was able to use your first example without
having
   any white space issue even if I reformatted it a bit. If I want to
use
   the second solution, how would I define the behavior of the
dataTable?
   Would it still need to inherit dataTable for the looping capability
   since the number of rows are dynamic?
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Thursday, April 10, 2008 5:12 PM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   My experience with dataTables and clay has been that they don't get
   along very well, at least in the case of HTML templates (XML
templates
   are another story).  This is mainly because h:dataTable has a
   drastically different structure from HTML tables.  h:dataTable
expects
   to have h:columns as its immediate child (with optional tags for
  header
   and footer rows nested within each column), whereas HTML TABLE tags
   expect to have TR (row) tags as its children (or TR tags nested
within
  a
   TBODY), with the column (TD) tags nested within each row.
  Essentially,
   from the point of view of an h:dataTable, a column contains rows,
but
  in
   an HTML TABLE, a row contains columns, which makes mapping between
the
   two extremely difficult.  It can be done, but it involves making a
lot
   of dummy jsfid=void tags and using SPAN tags to cause elements
that
   wouldn't be visible in the mockup to be rendered at runtime.
  
   e.g.,
  
   table jsfid=h:dataTable var=foo value=#{bar.list}
   tr jsfid=void allowBody=false
  thMock Heading/th
   /trtr jsfid=void
  td jsfid=h:column
#{foo.name}
span jsfid=h:outputText value=Real Heading
   facetName=header/span
 /td
  /tr
   /table
  
   Note that the lack of whitespace around the TR elements is
intentional
   to avoid (blank) text elements winding up as children of the
  h:dataTable
   component (which is very nasty and breaks everything!).
 

RE: [Shale Clay]

2008-04-11 Thread Richard Eggert
This is just a shot in the dark, but have you tried wrapping the form (or the 
whole page) in a tag that has jsfid=f:view?

Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com



-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Fri 4/11/2008 3:34 PM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
 
I tried it and didn't seem to make a difference; it doesn't invoke the
action. It's really weird; without the enctype attribute, it at least
invokes the action; I suspect on postback, JSF doesn't restore the view
correctly because if I change my javax.faces.STATE_SAVING_METHOD from
client to server, I see

~com.sun.faces.saveStateFieldMarker~

at the bottom of the page.

-Original Message-
From: Ryan Wynn [mailto:[EMAIL PROTECTED] 
Sent: Friday, April 11, 2008 3:12 PM
To: user@shale.apache.org
Subject: Re: [Shale Clay]

On Fri, Apr 11, 2008 at 2:50 PM, Zheng, Xiahong [EMAIL PROTECTED]
wrote:
 I thought about this, but tomahawk doesn't seem to have a form
  component.



  -Original Message-
  From: Gary VanMatre [mailto:[EMAIL PROTECTED]
  Sent: Friday, April 11, 2008 1:35 PM
  To: user@shale.apache.org
  Subject: RE: [Shale Clay]

  From: Zheng, Xiahong [EMAIL PROTECTED]
   Thanks again. I have another question. How does shale work with
   fileload? I am trying to use t:fileUpload from tomahawk. I copied
the
   component definition into my clay-config.xml
  
   component jsfid=t:inputFileUpload
 componentType=org.apache.myfaces.HtmlInputFileUpload
 extends=baseOutput
 attributes
 set name=id bindingType=VB /
 .
 /attributes
   /component
  
   And I added the following in my html form
  
   form enctype=multipart/form-data
  
   input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
   storage=file /
  
   input type=submit action=#{mybean.getQuotes} value=Get
Quotes/
  
   /form
  
   When I hit the submit button, action method is never invoked.
   Interestingly, if I remove the enctype attribute, action method
is
   indeed invoked but the input is null which is expected. I have the
   extension filter configured.
  
   Any idea?
  

Can you try this?

component jsfid=multipart-form extends=form
   attributes
 set name=enctype value=multipart/form-data/
   /attributes
/component

+

form jsfid=multipart-form/form

That seems to be working ok for me.

Ryan

  This is just a guess but you might try using the tomahawk form
component
  too.  There might be some component coupling that is assumed in the
  library.

  Gary

  
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Friday, April 11, 2008 7:33 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Yes.  Basically, you would have to define a component that inherits
  from
   h:dataTable, and give it child elements that inherit from h:column.
   Each of those child elements would then contain children that make
up
   the content of your columns.
  
   Rich Eggert
   Member of Technical Staff
   Proteus Technologies, LLC
   http://www.proteus-technologies.com
  
  
  
   -Original Message-
   From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
   Sent: Fri 4/11/2008 12:08 AM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   Thanks a lot Rich. I was able to use your first example without
having
   any white space issue even if I reformatted it a bit. If I want to
use
   the second solution, how would I define the behavior of the
dataTable?
   Would it still need to inherit dataTable for the looping capability
   since the number of rows are dynamic?
  
   -Original Message-
   From: Richard Eggert [mailto:[EMAIL PROTECTED]
   Sent: Thursday, April 10, 2008 5:12 PM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
  
   My experience with dataTables and clay has been that they don't get
   along very well, at least in the case of HTML templates (XML
templates
   are another story).  This is mainly because h:dataTable has a
   drastically different structure from HTML tables.  h:dataTable
expects
   to have h:columns as its immediate child (with optional tags for
  header
   and footer rows nested within each column), whereas HTML TABLE tags
   expect to have TR (row) tags as its children (or TR tags nested
within
  a
   TBODY), with the column (TD) tags nested within each row.
  Essentially,
   from the point of view of an h:dataTable, a column contains rows,
but
  in
   an HTML TABLE, a row contains columns, which makes mapping between
the
   two extremely difficult.  It can be done, but it involves making a
lot
   of dummy jsfid=void tags and using SPAN tags to cause elements
that
   wouldn't be visible in the mockup to be rendered at runtime.
  
   e.g.,
  
   table jsfid=h:dataTable var=foo value=#{bar.list}
   tr jsfid=void allowBody=false
  thMock Heading/th
   /trtr 

RE: [Shale Clay]

2008-04-11 Thread Zheng, Xiahong
Yes, I am use JSF1.2 RI. It's been working for me (at least, the upload
part of tomahawk). I am getting the current problem when I added shale
in the mix.

-Original Message-
From: Gary VanMatre [mailto:[EMAIL PROTECTED] 
Sent: Friday, April 11, 2008 4:15 PM
To: user@shale.apache.org
Subject: RE: [Shale Clay]


 -- Original message --
From: Zheng, Xiahong [EMAIL PROTECTED]
 I tried it and didn't seem to make a difference; it doesn't invoke the
 action. It's really weird; without the enctype attribute, it at
least
 invokes the action; I suspect on postback, JSF doesn't restore the
view
 correctly because if I change my javax.faces.STATE_SAVING_METHOD
from
 client to server, I see
 
   ~com.sun.faces.saveStateFieldMarker~

Sounds like you are using JSF 1.2 with tomahawk?


Gary

 
 at the bottom of the page.
 
 -Original Message-
 From: Ryan Wynn [mailto:[EMAIL PROTECTED] 
 Sent: Friday, April 11, 2008 3:12 PM
 To: user@shale.apache.org
 Subject: Re: [Shale Clay]
 
 On Fri, Apr 11, 2008 at 2:50 PM, Zheng, Xiahong
[EMAIL PROTECTED]
 wrote:
  I thought about this, but tomahawk doesn't seem to have a form
   component.
 
 
 
   -Original Message-
   From: Gary VanMatre [mailto:[EMAIL PROTECTED]
   Sent: Friday, April 11, 2008 1:35 PM
   To: user@shale.apache.org
   Subject: RE: [Shale Clay]
 
   From: Zheng, Xiahong [EMAIL PROTECTED]
Thanks again. I have another question. How does shale work with
fileload? I am trying to use t:fileUpload from tomahawk. I copied
 the
component definition into my clay-config.xml
   
component jsfid=t:inputFileUpload
  componentType=org.apache.myfaces.HtmlInputFileUpload
  extends=baseOutput
  attributes
  set name=id bindingType=VB /
  .
  /attributes
/component
   
And I added the following in my html form
   
form enctype=multipart/form-data
   
input jsfid=t:inputFileUpload value=#{mybean.symbolsFile}
storage=file /
   
input type=submit action=#{mybean.getQuotes} value=Get
 Quotes/
   
/form
   
When I hit the submit button, action method is never invoked.
Interestingly, if I remove the enctype attribute, action method
 is
indeed invoked but the input is null which is expected. I have
the
extension filter configured.
   
Any idea?
   
 
 Can you try this?
 
 component jsfid=multipart-form extends=form
attributes
  set name=enctype value=multipart/form-data/
/attributes
 /component
 
 +
 
 form jsfid=multipart-form/form
 
 That seems to be working ok for me.
 
 Ryan
 
   This is just a guess but you might try using the tomahawk form
 component
   too.  There might be some component coupling that is assumed in the
   library.
 
   Gary
 
   
   
-Original Message-
From: Richard Eggert [mailto:[EMAIL PROTECTED]
Sent: Friday, April 11, 2008 7:33 AM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
   
Yes.  Basically, you would have to define a component that
inherits
   from
h:dataTable, and give it child elements that inherit from
h:column.
Each of those child elements would then contain children that
make
 up
the content of your columns.
   
Rich Eggert
Member of Technical Staff
Proteus Technologies, LLC
http://www.proteus-technologies.com
   
   
   
-Original Message-
From: Zheng, Xiahong [mailto:[EMAIL PROTECTED]
Sent: Fri 4/11/2008 12:08 AM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
   
Thanks a lot Rich. I was able to use your first example without
 having
any white space issue even if I reformatted it a bit. If I want
to
 use
the second solution, how would I define the behavior of the
 dataTable?
Would it still need to inherit dataTable for the looping
capability
since the number of rows are dynamic?
   
-Original Message-
From: Richard Eggert [mailto:[EMAIL PROTECTED]
Sent: Thursday, April 10, 2008 5:12 PM
To: user@shale.apache.org
Subject: RE: [Shale Clay]
   
My experience with dataTables and clay has been that they don't
get
along very well, at least in the case of HTML templates (XML
 templates
are another story).  This is mainly because h:dataTable has a
drastically different structure from HTML tables.  h:dataTable
 expects
to have h:columns as its immediate child (with optional tags for
   header
and footer rows nested within each column), whereas HTML TABLE
tags
expect to have TR (row) tags as its children (or TR tags nested
 within
   a
TBODY), with the column (TD) tags nested within each row.
   Essentially,
from the point of view of an h:dataTable, a column contains rows,
 but
   in
an HTML TABLE, a row contains columns, which makes mapping
between
 the
two extremely difficult.  It can be done, but it involves making
a
 lot
of dummy jsfid=void tags 

Failed model update

2008-04-11 Thread Zhen, Jane
With following code, I was trying to udpate a variable in a backing bean with a 
HtmlInputText component in viewRoot. But the model is never updated. the value 
is stil the initial one. Could anyone see what went wrong here? this is from a 
previous post code sample.

thank you so much

Jane



vc = new CredentialBean();

UIViewRoot root=facesContext.getViewRoot();

UIForm credForm = new HtmlForm();

credForm.setId(credForm);

credForm.setParent(root);

UIInput label = new HtmlInputText();

label.setId(label);

label.setParent(credForm);

ValueBinding vb = 
facesContext.getApplication().createValueBinding(#{credentialBean.passwordAgain});

label.setValueBinding(value, vb);

facesContext.getExternalContext().getRequestMap().put(credentialBean, vc);

facesContext.getExternalContext().getRequestParameterMap().put(credForm:label,myLabel);

root.processDecodes(facesContext);

root.processValidators(facesContext);

root.processApplication(facesContext);

root.processUpdates(facesContext);

assertEquals(vc.getPasswordAgain(), myLabel);