I apologize, if this is the correct group for my question. 

 

I am trying to create a facelets layout hierarchy for a crud based application I am building in JSF.  I have a proto type working fine in JSF and now I want to use facelets to standardize the layouts before we begin the actual application.  I have created a base layout that defines things like message blocks and such.  I would like to create a QBE layout that includes my base layout and a button panel that has buttons like find, clear, etc. 

 

The problem is that I am unable to place a h:commandbuttom inside the layout.  For Instance

 

 

aQBEButtonPanel.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:ui="http://java.sun.com/jsf/facelets"

      xmlns:h="http://java.sun.com/jsf/html">

      <ui:composition>

                 <h:panelGrid rows="3" columns="1">

                        <h:commandButton value="Find" action="" id="findButton"/>

                        <h:commandButton value="Clear" action="" id="clearButton"  immediate="true"/>

                        <h:commandButton value="Add" action="" id="addButton"  immediate="true"/>

                 </h:panelGrid>

      </ui:composition>

</html>

 

I have a base Layout defined as

 

aBaseLayout.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:ui="http://java.sun.com/jsf/facelets"

      xmlns:h="http://java.sun.com/jsf/html">

      <head>

        <title>#{title}</title>

        <link rel="stylesheet" type="text/css" href="" />

      </head>

      <body>

            <div id="qbe-buttons">

                <ui:include src="">

            </div>           

            <div id="center">

              <ui:insert name="content">

                 <div>

                  <ui:include src=""

                </div>

              </ui:insert>

            </div>

      </body>

</html>

 

 

And the countryQBE.xhtml is defined as follows

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml"

      xmlns:ui="http://java.sun.com/jsf/facelets"

      xmlns:h="http://java.sun.com/jsf/html"

      xmlns:f="http://java.sun.com/jsf/core"

      xmlns:t="http://myfaces.apache.org/tomahawk"

      xmlns:as="http://com.alltiers.client.jsf/allTierSystems">

     

<f:view>

      <h:form id="countryQBEForm">

            <body>

                  <ui:composition template="/facelets/layout/aBaseLayout.xhtml">

                        <ui:param name="title" value="#{countryQBEController.title}"/>

                        <ui:param name="theQBEController" value="#{countryQBEController}"/>

                        <ui:param name="theFormController" value="#{countryFormController}"/>

                        <ui:define name="content">

                              <h:panelGrid columns="3">

                                                            Bunch of Input Fields

                                                           

                                                            Etc

 

The problem is that I get this exception

23:11:04,062 INFO  [STDOUT] 6-Jun-2006 11:11:04 PM com.sun.facelets.FaceletViewHandler handleRenderException

SEVERE: Error Rendering View[/pages/countryQBE.xhtml]

java.lang.IllegalArgumentException: Component findButton must be embedded in an form

      at org.apache.myfaces.shared_impl.renderkit.html.HtmlButtonRendererBase.buildOnClick(Htm

 

 

Now the commandButtons cannot be contained in a different Form than the Input Fields otherwise the Model is not updated.  Does anybody know how to place a command button in a facelets layout?

 

Tom

                                                           

 

Reply via email to