[ 
https://issues.apache.org/jira/browse/TRINIDAD-1355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660771#action_12660771
 ] 

Tomas Havelka commented on TRINIDAD-1355:
-----------------------------------------

You can modify your template to meet "bogus" solution better. See below:

<tr:form defaultCommand="#{empty(pDefaultCommand) ? 'this_is_bogus' : 
pDefaultCommand}"> 

Or you can attach your own facelet function to decide which default command to 
attach:

<jsp:root  xmlns:cf="http://your.custom.taglib/functions";> 
  ....
  <tr:form defaultCommand="#{cf:myDefaultCommand(pDefaultCommand)}"> 
  ....
</jsp:root>

public static String myDefaultCommand(String defaultCommand)
{
  return ((defaultCommand == null) || (defaultCommand.trim().equals(""))) ? 
"this_is_bogus" : defaultCommand;
}


> tr:form defaultCommand won't work with empty value
> --------------------------------------------------
>
>                 Key: TRINIDAD-1355
>                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1355
>             Project: MyFaces Trinidad
>          Issue Type: Bug
>          Components: Facelets
>            Reporter: Caius Gran
>
> The problem is tr:form's defaultCommand attribute throws an exception if it's
> left empty.
> And this is a problem at least for my case where I try to make a Facelets 
> template with a parameterized
> defaultCommand attribute. Whenever I was to use the template, I would have to 
> put something into
> the defaultCommand parameter even if I didn't need defaultCommand for that 
> particular instance.
> Basically I must give it a bogus value to make it work (see "this_is_bogus" 
> below).
> I'd like to have it work without explicit ui:param.
> I encountered it with Trinidad 1.0.8 and didn't try other versions.
> Thanks!
> THE EXCEPTION:
> java.lang.IllegalArgumentException
>       at 
> org.apache.myfaces.trinidad.component.UIXComponentBase.findComponent(UIXComponentBase.java:432)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.FormRenderer.getFullOnkeypress(FormRenderer.java:964)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.FormRenderer.encodeBegin(FormRenderer.java:172)
>       at 
> org.apache.myfaces.trinidad.render.CoreRenderer.encodeBegin(CoreRenderer.java:200)
>       at 
> org.apache.myfaces.trinidad.component.UIXComponentBase.encodeBegin(UIXComponentBase.java:678)
>       at 
> org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:288)
>       at 
> org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:321)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PanelPartialRootRenderer.renderContent(PanelPartialRootRenderer.java:64)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.BodyRenderer.renderContent(BodyRenderer.java:138)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.PanelPartialRootRenderer.encodeAll(PanelPartialRootRenderer.java:119)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.BodyRenderer.encodeAll(BodyRenderer.java:78)
>       at 
> org.apache.myfaces.trinidad.render.CoreRenderer.delegateRenderer(CoreRenderer.java:335)
>       at 
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.DocumentRenderer.encodeAll(DocumentRenderer.java:80)
>       at 
> org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:224)
>       at 
> org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:711)
>       at 
> com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:252)
>       at 
> com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
>       at 
> com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:594)
>       at 
> org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:182)
>       at 
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>       at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:250)
>       at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:207)
>       at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:161)
>       at 
> org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
>       at 
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>       at 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>       at 
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>       at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
>       at java.lang.Thread.run(Thread.java:595)
> TEMPLATE:
> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; version="2.0"
>    xmlns:f="http://java.sun.com/jsf/core"; 
> xmlns:h="http://java.sun.com/jsf/html";
>    xmlns:trh="http://myfaces.apache.org/trinidad/html"; 
> xmlns:tr="http://myfaces.apache.org/trinidad";
>    xmlns:ui="http://java.sun.com/jsf/facelets";>
>    
>    <ui:composition>
>       <f:view locale="#{smth}">
>          <tr:document title="#{pTitle}">
>             <tr:form defaultCommand="#{pDefaultCommand}">
>                 ...
>             </tr:form>
>          </tr:document>
>       </f:view>
>    </ui:composition>
> </jsp:root>
> USE INSTANCE:
> <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; version="2.0"
>    xmlns:f="http://java.sun.com/jsf/core"; 
> xmlns:h="http://java.sun.com/jsf/html";
>    xmlns:trh="http://myfaces.apache.org/trinidad/html"; 
> xmlns:tr="http://myfaces.apache.org/trinidad";
>    xmlns:ui="http://java.sun.com/jsf/facelets";>
>    
>    <ui:composition>
>       <ui:decorate>
>            <ui:param name="pTitle" value="Test page" />
>            <ui:param name="pDefaultCommand" value="this_is_bogus" />
>       </ui:decorate>
>    </ui:composition>
> </jsp:root>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to