A created a new issue about this bug:

http://issues.apache.org/struts/browse/STR-2873

2006/5/11, Craig McClanahan <[EMAIL PROTECTED]>:

On 5/9/06, A. Alonso Dominguez <[EMAIL PROTECTED]> wrote:
>
> Hi there!
>
> I'm trying to use the new struts-action framework, version 1.3.3 with
> tiles
> and faces. I'm following the example applications but I found possibly a
> bug
> when rendering a struts-based FormBean.
>
> The jsp code that I was using is as follows:
>
> <s:errors />
> <s:form action="/login" id="login" styleClass="loginForm"
> focus="username">
>     <h:panelGrid columns="2">
>         <f:facet name="header">
>             <h:panelGroup>
>                 <h:graphicImage
> url="/common/skin/social-labs/img/circle1.png"
> />
>                 <s:message key="page.logon.form">
>                     <f:param name="arg0" value="Social Labs" />
>                 </s:message>
>             </h:panelGroup>
>         </f:facet>
>         <h:outputLabel for="username">
>             <s:message key="form.logon.username" />
>         </h:outputLabel>
>         <h:inputText id="username" size="25" value="#{logonForm.username
}"
> />
>
>         <h:outputLabel for="password">
>             <s:message filter="false" key="form.logon.password" />
>         </h:outputLabel>
>         <h:inputSecret id="password" size="25" value="#{
logonForm.password}"
> />
>
>         <f:facet name="footer">
>             <h:commandButton id="submit" type="SUBMIT" styleClass="img"
> image="/common/skin/social-labs/img/login.png" />
>         </f:facet>
>     </h:panelGrid>
> </s:form>
>
> but when it's rendered to the view, the HTML form's "action" attribute
> references "/common/skin/default/layout/base.do". There is not any
action
> in
> my application with that url. Instead there is a file
> "/common/skin/default/layout/base.jsp" which is the base file for the
> tiles
> definitions:
>
> <definition name="base.layout"
> page="/common/skin/default/layout/base.jsp">
>         <put name="title" value="" />
>         <put name="navigation" value="" />
>         <put name="body" value="" />
>         <putList name="scripts">
>             <add value="" />
>         </putList>
>     </definition>
>
> I dived inside "the org.apache.struts.faces.renderer.FormRenderer" code
> and
> I found this code (line 280):
>
> protected String action(FacesContext context, UIComponent component) {
>         String actionURL =
>             context.getApplication().getViewHandler().
>             getActionURL(context, context.getViewRoot().getViewId());
>         if (log.isTraceEnabled()) {
>             log.trace("getActionURL(" + context.getViewRoot
().getViewId()
> +
>                       ") --> " + actionURL);
>         }
>         return (context.getExternalContext
().encodeActionURL(actionURL));
>
>     }
>
>
> which really does nothing with the actionURL, It just takes de
ViewRootId
> and returns it to the caller.
> Playing with this code I have now the following:
>
> protected String action(FacesContext context, UIComponent component,
> ModuleConfig moduleConfig) {
>         //String actionURL =
>         //    context.getApplication ().getViewHandler().
>         //    getActionURL(context, context.getViewRoot().getViewId());
>         FormComponent form = (FormComponent) component;
>         String actionURL = context.getApplication().getViewHandler().
>               getActionURL(context, moduleConfig.getPrefix() +
> form.getAction());
>         if (log.isTraceEnabled()) {
>             log.trace("getActionURL(" + context.getViewRoot
().getViewId()
> +
>                       ") --> " + actionURL);
>         }
>         return (context.getExternalContext
().encodeActionURL(actionURL));
>
>     }
>
> I don't know if this is the correct way for retrieving the real
actionURL
> but It works now and I'm using it.
>
> Should this be posted as a bug??
>
> Yes, this does sound like a bug.  Could you please file an issue on it,
using project name "Struts Action 1" and component "Faces"?

  http://issues.apache.org/struts/

Craig


Reply via email to