that is a bug in myfaces, I'll fix it next days.

The problem is caused by _ComponentUtils.



On 9/23/06, Colin Doyle <[EMAIL PROTECTED]> wrote:




Hello,



I had a struts-faces form working with MyFaces 1.1.3.

The form is very simple, based on the logon.jsp that comes with the
struts-faces-example2-1.3.5.

The form definitely works with MyFaces 1.1.3, and the corresponding execute
method of the Struts Action is successfully invoked.



The main components of the form are basically:



**************************************************************************************************************

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>

<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<%@ taglib prefix="s"
uri="http://struts.apache.org/tags-faces"%>

<%@ taglib uri="http://myfaces.apache.org/tomahawk";
prefix="t"%>



<f:view>



            <f:loadBundle basename="applResources"

                        var="appl_messages" />



            <t:saveState value="#{calendarBean}" />



            <s:form action="/logsAction" styleClass="form" id="logsForm">



                        <t:inputDate type="both" ampm="false"
popupCalendar="true"


value="#{calendarBean.firstDate}"


title="#{appl_messages['logs.startDate']}">

                        </t:inputDate>





                        <h:panelGrid columns="1"
styleClass="form-background"


headerClass="form-header" columnClasses="form-prompt,form-field"


footerClass="form-footer">





                                    <h:outputLabel
for="logname" styleClass="label">


<h:outputText value="#{appl_messages['logs.enterLog']}" />

                                    </h:outputLabel>



                                    <h:inputText
id="logname" size="16" styleClass="field"


value="#{logsFormBean.logname}" />



                                    <h:commandButton
id="submit" type="SUBMIT"


styleClass="command-single"


value="#{appl_messages['logs.submit']}" size="10" immediate="false" />





                        </h:panelGrid>



            </s:form>





</f:view>



**************************************************************************************************************



However, when I moved to MyFaces 1.1.4, I got the following error:



SEVERE: Servlet.service() for servlet jsp threw exception

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

            at
org.apache.myfaces.shared_impl.renderkit.html.HtmlButtonRendererBase.buildOnClick(HtmlButtonRendererBase.java:172)

            at
org.apache.myfaces.shared_impl.renderkit.html.HtmlButtonRendererBase.encodeEnd(HtmlButtonRendererBase.java:119)

            at
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)

            at
org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:442)

            at
org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.renderChildren(HtmlGridRendererBase.java:216)

            at
org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase.encodeEnd(HtmlGridRendererBase.java:98)

            at
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)

            at
javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:495)

            at
javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:363)

            at
org.apache.myfaces.shared_impl.taglib.UIComponentBodyTagBase.doEndTag(UIComponentBodyTagBase.java:54)

            at
org.apache.jsp.WEB_002dINF.tiles.logs_jsp._jspx_meth_h_panelGrid_0(org.apache.jsp.WEB_002dINF.tiles.logs_jsp:294)

            at
org.apache.jsp.WEB_002dINF.tiles.logs_jsp._jspx_meth_s_form_0(org.apache.jsp.WEB_002dINF.tiles.logs_jsp:206)

            at
org.apache.jsp.WEB_002dINF.tiles.logs_jsp._jspx_meth_f_view_0(org.apache.jsp.WEB_002dINF.tiles.logs_jsp:127)

            at
org.apache.jsp.WEB_002dINF.tiles.logs_jsp._jspService(org.apache.jsp.WEB_002dINF.tiles.logs_jsp:84)

            at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

            at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

            at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

            at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

            at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

            at
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

            at
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

            at
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)

            at
org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:643)

            at
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:637)

            at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

            at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            at java.lang.reflect.Method.invoke(Method.java:585)

            at
org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:126)

            at
org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:149)

            at
org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:761)

            at
org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:893)

            at
org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:462)

            at
org.apache.jsp.WEB_002dINF.tiles.main_002dlayout_jsp._jspx_meth_tiles_insert_1(org.apache.jsp.WEB_002dINF.tiles.main_002dlayout_jsp:153)

            at
org.apache.jsp.WEB_002dINF.tiles.main_002dlayout_jsp._jspService(org.apache.jsp.WEB_002dINF.tiles.main_002dlayout_jsp:84)

            at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

            at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

            at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

            at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

            at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

            at
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)

            at
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)

            at
org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)

            at
org.apache.jasper.runtime.PageContextImpl.doInclude(PageContextImpl.java:643)

            at
org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:637)

            at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

            at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

            at java.lang.reflect.Method.invoke(Method.java:585)

            at
org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:126)

            at
org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:149)

            at
org.apache.struts.tiles.taglib.InsertTag.doInclude(InsertTag.java:761)

            at
org.apache.struts.tiles.taglib.InsertTag$InsertHandler.doEndTag(InsertTag.java:893)

            at
org.apache.struts.tiles.taglib.InsertTag.doEndTag(InsertTag.java:462)

            at
org.apache.jsp.pages.logs_jsp._jspx_meth_tiles_insert_0(org.apache.jsp.pages.logs_jsp:88)

            at
org.apache.jsp.pages.logs_jsp._jspService(org.apache.jsp.pages.logs_jsp:64)

            at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)

            at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)

            at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)

            at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

            at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

            at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

            at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)

            at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)

            at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)

            at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)

            at
org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:416)

            at
org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:234)

            at
org.apache.struts.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)

            at
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)

            at
javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)

            at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

            at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

            at
org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)

            at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)

            at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

            at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

            at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

            at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

            at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

            at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

            at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

            at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)

            at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)

            at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

            at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

            at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

            at java.lang.Thread.run(Thread.java:595)

23-Sep-2006 13:01:18
org.apache.catalina.core.ApplicationDispatcher invoke

SEVERE: Servlet.service() for servlet jsp threw exception

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





I've tried putting it in a regular html form, but this obviously will not
pick up the Struts form.



By debugging it, I believe I narrowed it down to the findNestingForm method
of the
org.apache.myfaces.shared_impl.util._ComponenetUtils.

The COMPONENT_FAMILY of each parent from the above JSP is never
"javax.faces.Form". The parents are:

HTMLCommandButton -> HtmlPanelGrid -> FormComponent -> UIViewRoot, none of
which have a component family of "javax.faces.Form".

The component family of FormComponent is "org.apache.struts.faces.Form".

In the faces-config.xml, I have a component defined as follows:



    <component>

        <component-type>org.apache.struts.faces.Form</component-type>

        <component-class>

            org.apache.struts.faces.component.FormComponent

        </component-class>

    </component>



By changing the component-class to "javax.faces.component.UIForm", the form
is rendered, but not submitted to the struts action.



I was wondering if anyone knew how to get this struts-faces form working
with MyFaces1.1.4 - I'm hoping there might be a configuration parameter that
will do the trick.



Any help is much appreciated.



Thanks,



Colin.
This e-mail is business-confidential and may be privileged. If you are not
 the intended recipient, please notify us immediately and delete it. If the
 email does not relate to Vordel's business then it is neither from nor
 authorized by Vordel. Thank you.



--
Matthias Wessendorf
http://tinyurl.com/fmywh

further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com

Reply via email to