We have a solution for dynamic page content that is component based. I wouldn’t say that it stands up to JSF but it’s similar in concept. The content of the page is defined using xml metadata.
However, I suppose that you could argue, why not use JSF? I would be interested in hearing what advantage you would have using struts with JSF when JSF handles both the view layer and controller? Consider the following DTD and XML snippet: <!ELEMENT display-element (attribute*, set-property*)> <!ATTLIST display-element displayElementId CDATA #REQUIRED type %DisplayElementType; #IMPLIED jspName CDATA #IMPLIED extends CDATA #IMPLIED modelClassname CDATA #IMPLIED roles CDATA #IMPLIED useContainerNaming %Boolean; #IMPLIED > <!ELEMENT set-property (#PCDATA)> <!ATTLIST set-property name CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT attribute (set-property*)> <!ATTLIST attribute attName CDATA #IMPLIED displayName CDATA #IMPLIED displayElementId CDATA #REQUIRED requiredField %Boolean; #IMPLIED sequence CDATA #REQUIRED roles CDATA #IMPLIED useContainerNaming %Boolean; #IMPLIED > This is an example of building a change password page. The "changePasswdForm" is the root "component". <!-- The "crudForm" definition serves as a base layout for an add or update page --> <display-element displayElementId="crudForm" > <!-- will always be placed on the bottom of the form, sequence=99 --> <attribute displayElementId="Message" displayName="message.required.legend" sequence="99"/> </display-element> <!-- The "changePasswdForm" definition only allows you to change your password. It inherits the required message legend from the crudForm --> <display-element displayElementId="changePasswdForm" extends="crudForm" > <!-- include the user password fields also used by the addUserWidget --> <attribute displayElementId="userPasswdWidget" sequence="1"/> <!-- The rest of the user information is cached in the html form allowing the update handler to be reused for the change password page --> <attribute attName="cmManagerId" displayElementId="Text" sequence="10"> <set-property name="isHidden" value="true"/> </attribute> <attribute attName="cmFname" displayElementId="Text" sequence="11"> <set-property name="isHidden" value="true"/> </attribute> <attribute attName="cmMname" displayElementId="Text" sequence="12"> <set-property name="isHidden" value="true"/> </attribute> <attribute attName="cmLname" displayElementId="Text" sequence="13"> <set-property name="isHidden" value="true"/> </attribute> </display-element> <!-- The userPasswordWidget is included by the userAddWidget and The changePasswdForm. --> <display-element displayElementId="userPasswdWidget"> <attribute attName="cuPassword" displayElementId="Text" displayName="cuPassword.display" sequence="1" requiredField="true"> <set-property name="size" value="15"/> <set-property name="maxlength" value="15"/> <set-property name="isPassword" value="true"/> </attribute> <attribute attName="retypePassword" displayElementId="Text" displayName="retypePassword.display" sequence="2" requiredField="true"> <set-property name="size" value="15"/> <set-property name="maxlength" value="15"/> <set-property name="isPassword" value="true"/> </attribute> </display-element> > At 3:47 PM +0000 12/19/03, PILGRIM, Peter, FM wrote: >>Having spoken with Don Brown, I can see the benefits now >>of the BeanWrapper and the [Xml]BeanFactory in Spring. Creating >>a graph of objects from an XML file is pretty handy for certain >>situations. I can see the light of the joke. Objects just >>"Spring" into life from literal paper. >> >>I guess the decision here will be political. "Can we just take >>or borrow the org.springframework.beans.* of your framework?" >>Hmmm. > > The thing that looks attractive to me in Spring is the ability to make > a graph of objects more complicated than a tree. It would be possible > to do this in Digester, without necessarily even writing custom rule > classes. > > As for PicoContainer, if someone could just show me how you write an > external configuration file that wires together objects through their > constructors, I might buy it, but it just doesn't seem to match up. As > soon as you had one new collaborator that you hadn't planned for, you'd > have to rewrite some java code somewhere, wouldn't you? > > That's another facet of Spring that appeals to me -- it's orientation > towards JavaBean conventions -- but we can achieve that with > homegrown processes using (or at least inspired by) Digester if we're > reluctant to pile on Spring. > > If Spring uses an Apache license, then politics or not we can use the > code just about anyway we like, but I don't know that we need to read > the Spring code to achieve the few things that seem most useful to me. > I still haven't found the time to really dig into the various > microkernel/IoC type frameworks yet, so I hope I'm not just blowing > smoke... > > Joe > > -- > Joe Germuska > [EMAIL PROTECTED] > http://blog.germuska.com > "We want beef in dessert if we can get it there." > -- Betty Hogan, Director of New Product Development, National > Cattlemen's Beef Association > > > --------------------------------------------------------------------- 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]