Thanks for your answer!
great that I finally found you, guys :)
your answer is very clear but I need some details:
about html template approach:
lets there is two screens "profile" and "main". Layout of them is
defined by layout.html
#{managed-bean-name.title}
<table>
<tr>
<td rowspan=2>
<span jsfid=top.html />
<tr>
<td>
<span jsfid=left.html />
<tr>
<td>
<span jsfid=content.html />
</table>
The only difference is instead of <span jsfid=content.html /> in profile screen
I need profile.html and in main I need main.html components. How can I do this?
As I understand I need something like this:
<component jsfid="layout.html">
<element renderid="0" jsfid="top.html">
<element renderid="1" jsfid="left.html">
<element renderid="2" jsfid="emptycontent.html">
</component>
<compoent jsfid="profilePage" extends="layout.html">
<element renderid="2" jsfid="profile.html">
</compoent>
<compoent jsfid="mainPage" extends="layout.html">
<element renderid="2" jsfid="main.html">
</compoent>
and from login :
<navigation-case>
<from-action>#{login.login}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/profilePage.clay</to-view-id>
</navigation-case>
(yes - I've specified addition mapping to faces servlet)
so view handler should try to find view "profilePage" from components
defined in clay-plugin. but may I do something wrong - I tried many ways
but without success :(
In rolodex I can't found anything about templating - it's just three
different pages
Thanks
Hi!
I don't know is there proper place for discussing shale. If it's not can
you point me to correct mailing list
This is the mailing list. You've even prefixed your message subject with [Shale].
I'm using JSF and looking for good rendering/template framework.
Remembering that Shale is created by those people who have done Struts I
prefer using it instead of faceletes ;)
When I read "Clay's approach is unique. The granularity is targeted at
the declaration of JSF components versus composition of JSP fragments" I
thought that it's that I exactly want - if I have a tree of components I
want to change in templates components - not html fragments. But when I
build Shale from sources I can't find this very important feature for me
- ability to specify component tree templates in clay-config.xml. For
example:
I want to determine component profilePage
<component jsfid="layout.html">
<element renderid="0" jsfid="top.html">
<element renderid="1" jsfid="left.html">
<element renderid="2" jsfid="emptycontent.html">
</component>
<compoent jsfid="profilePage" extends="layout.html">
<element renderid="2" jsfid="profile.html">
</compoent>
and redirect to this component from my actions like any other views (e.g
jsps).
<navigation-case>
<from-action>#{login.login}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/profilePage.clay</to-view-id>
</navigation-case>
Did I miss something?
You are using full HTML view's in this example. You must add "*.clay" to your
faces servlet mapping.
<servlet-mapping>
<servlet-name>faces</servlet-name>
<url-pattern>*.clay</url-pattern>
</servlet-mapping>
Thanks
Clay gives you allot of flexibility for creating composition within a page but there are really only two options for identifying a page that translates into a JSF view id.
1) JSP views - A standard JSP page using Clay's custom JSP tag.
2) HTML tapestry like views - HTML templating where a standard HTML document
is used to bind a component to an HTML element using a jsfid attribute.
JSP views:
With the first option, you will use clay's XML configuration files to construct
a page, just as you have shown above. From the JSP page, you specify a
top-level clay component using the clay JSP tag.
<clay:clay id="body" jsfid="layout.html" />
Since this is a custom tag, you can interleave other JSF tags or even JSTL tags. Another option using JSP views would be to define a page fragment using an HTML template. You might use this option if you had a tricky html table layout that the standard panelGrid would not handle. To do this, you have to specify the suffix that you are using to identify that a jsfid is a HTML template.
This is done with an environment initialization parameter in your web deployment
descriptor called "clay-template-suffix". Another required environment
setting if your using JSP view’s is “clay-config-files” which is a comma delimited list
of your clay XML configuration files.
HTML views:
The html views are really starting to shape up. The idea here is that you can
use an html page as a template for defining the entire faces page. There are
two options here. You can use the html mockup to bind to component definitions
within the Clay XML configuration files. Or, you can define a page without
using a configuration file. And, you can mix and match these options. You can
even imbed JSF expressions within the text of the html page similar to JSP 2.0.
#{managed-bean-name.title}
<table>
<tr>
<td rowspan=2>
<span jsfid=top.html />
<tr>
<td>
<span jsfid=left.html />
<tr>
<td>
<span jsfid=content.html />
</table>
The key to full html view is that the page must be dispatched thru the faces servlet. This means that you must have a servlet mapping to the suffix that you specify for the "clay-template-suffix".
You can see an example of all of these techniques in the Rolodex usecase in the
nightly build
(http://svn.apache.org/builds/struts/nightly/struts-shale/shale-framework-20050919.zip).
The war is located under the webapps folder.
Gary
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]