Derick...thanks alot for your help. I'm going to try this out and let you know how things go. Jason
On 1/13/06, Derick Fernando <[EMAIL PROTECTED]> wrote: > > Hello, > > Just occurred to me, try making: > > <binding name="javascript" value="ognl:externalScripts"/> > an inherited-binding like: > <inherited-binding name="javascript" parameter-name="externalScripts"/> > > I dont see inherited-binding in the docs at: > http://jakarta.apache.org/tapestry/UsersGuide/spec.html should it be > there? > > Thanks > > Derick Fernando wrote: > > Hello Again, > > > > My first response was based on your first email. According to your stack > > trace in the second email, you are having a different problem with > > AbstractBinding. Perhaps someone else can help figure it out. > > > > Thanks > > > > Derick Fernando wrote: > > > >> Hello, > >> > >> Whats happening here is that tapestry needs to know how to convert > >> whatever is returned by getJavaScripts() into an iterator. So take a > >> look at: > >> > >> > http://jakarta.apache.org/tapestry/tapestry/hivedocs/module/tapestry.coerce.html > >> > >> > >> You could do something like: public abstract List getJavaScripts() > >> instead. Is there are a reason your return type is of object? > >> > >> Its easy to build a list of assets with ognl:{assets.fileOne, > >> assets.fileTwo}. > >> > >> If that does not meet your requirements you will have to make your own > >> contribution to tapestry.coerce.IteratorConverters. > >> > >> Hope that helps. > >> > >> Jason Suplizio wrote: > >> > >>> My last note: my application is passing an asset to my Border, which > >>> invokes > >>> my CustomShell > >>> <component id="myAssets" type="MyAssets"/> > >>> <component id="border" type="_comps:Border"> > >>> <binding name="externalScripts" value="ognl: > >>> components.myAssets.assets.javascriptFilename"/> > >>> </component> > >>> > >>> In the Border.jwc > >>> <parameter name="externalScripts" required="no"/> > >>> <component id="shell" type="CustomShell"> > >>> <binding name="javascript" value="ognl:externalScripts"/> > >>> </component> > >>> > >>> On 1/13/06, Jason Suplizio <[EMAIL PROTECTED]> wrote: > >>> > >>>> Here's the stack: > >>>> Using: org.jfree.chart.encoders.SunPNGEncoderAdapter > >>>> org.apache.tapestry.BindingException: Error converting value for > >>>> parameter > >>>> javascript: No type converter for type org.apache.tapestry.IAsset is > >>>> available. [context:/WEB-INF/tapcomps/Border.jwc, line 29, column 55] > >>>> at org.apache.tapestry.binding.AbstractBinding.getObject( > >>>> AbstractBinding.java:97) > >>>> at $CustomShell_80.getJavascript($CustomShell_80.java) > >>>> at > >>>> com.expd.lib.tapestry_v40.components.CustomShell.renderComponent ( > >>>> CustomShell.java:111) > >>>> at $CustomShell_80.renderComponent($CustomShell_80.java) > >>>> at > >>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java > >>>> :617) > >>>> at org.apache.tapestry.BaseComponent.renderComponent ( > >>>> BaseComponent.java:92) > >>>> at > >>>> org.apache.tapestry.AbstractComponent.render(AbstractComponent.java > >>>> :617) > >>>> at org.apache.tapestry.BaseComponent.renderComponent( > >>>> BaseComponent.java:92) > >>>> at org.apache.tapestry.AbstractComponent.render ( > >>>> AbstractComponent.java:617) > >>>> at > >>>> org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:275) > >>>> at org.apache.tapestry.engine.RequestCycle.renderPage( > >>>> RequestCycle.java:366) > >>>> at > >>>> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponse( > >>>> ResponseRendererImpl.java:71) > >>>> at > >>>> > $ResponseRenderer_108c54f6985.renderResponse($ResponseRenderer_108c54f6985.java) > >>>> > >>>> at > >>>> org.apache.tapestry.engine.PageService.service(PageService.java:68) > >>>> at > >>>> $IEngineService_108c54f69f8.service($IEngineService_108c54f69f8.java) > >>>> at > >>>> org.apache.tapestry.services.impl.EngineServiceOuterProxy.service( > >>>> EngineServiceOuterProxy.java:66) > >>>> at org.apache.tapestry.engine.AbstractEngine.service( > >>>> AbstractEngine.java:248) > >>>> at > >>>> org.apache.tapestry.services.impl.InvokeEngineTerminator.service ( > >>>> InvokeEngineTerminator.java:60) > >>>> at > >>>> > $WebRequestServicer_108c54f69cf.service($WebRequestServicer_108c54f69cf.java) > >>>> > >>>> at org.apache.tapestry.services.impl.DisableCachingFilter.service( > >>>> DisableCachingFilter.java:48) > >>>> at > >>>> > $WebRequestServicerFilter_108c54f69d1.service($WebRequestServicerFilter_108c54f69d1.java) > >>>> > >>>> at > >>>> > $WebRequestServicer_108c54f69d3.service($WebRequestServicer_108c54f69d3.java) > >>>> > >>>> at > >>>> > $WebRequestServicer_108c54f69cb.service($WebRequestServicer_108c54f69cb.java) > >>>> > >>>> > >>>> at > >>>> > org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service > >>>> > >>>> (WebRequestServicerPipelineBridge.java:56) > >>>> at > >>>> > $ServletRequestServicer_108c54f69af.service($ServletRequestServicer_108c54f69af.java) > >>>> > >>>> > >>>> at org.apache.tapestry.request.DecodedRequestInjector.service( > >>>> DecodedRequestInjector.java:55) > >>>> at > >>>> > $ServletRequestServicerFilter_108c54f69ab.service($ServletRequestServicerFilter_108c54f69ab.java) > >>>> > >>>> at > >>>> > $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java) > >>>> > >>>> > >>>> at org.apache.tapestry.multipart.MultipartDecoderFilter.service( > >>>> MultipartDecoderFilter.java:52) > >>>> at > >>>> > $ServletRequestServicerFilter_108c54f69a9.service($ServletRequestServicerFilter_108c54f69a9.java) > >>>> > >>>> at > >>>> > $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java) > >>>> > >>>> > >>>> at org.apache.tapestry.services.impl.SetupRequestEncoding.service( > >>>> SetupRequestEncoding.java:53) > >>>> at > >>>> > $ServletRequestServicerFilter_108c54f69ad.service($ServletRequestServicerFilter_108c54f69ad.java) > >>>> > >>>> at > >>>> > $ServletRequestServicer_108c54f69b1.service($ServletRequestServicer_108c54f69b1.java) > >>>> > >>>> > >>>> at > >>>> > $ServletRequestServicer_108c54f69a3.service($ServletRequestServicer_108c54f69a3.java) > >>>> > >>>> at org.apache.tapestry.ApplicationServlet.doService( > >>>> ApplicationServlet.java:123) > >>>> at com.expd.app.expo2.webaccess.ExpoTapestryServlet.doService ( > >>>> ExpoTapestryServlet.java:52) > >>>> at org.apache.tapestry.ApplicationServlet.doGet( > >>>> ApplicationServlet.java:79) > >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) > >>>> at javax.servlet.http.HttpServlet.service (HttpServlet.java:853) > >>>> at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( > >>>> ApplicationFilterChain.java:247) > >>>> at org.apache.catalina.core.ApplicationFilterChain.doFilter( > >>>> ApplicationFilterChain.java :193) > >>>> at org.apache.catalina.core.StandardWrapperValve.invoke( > >>>> StandardWrapperValve.java:256) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java:643) > >>>> at org.apache.catalina.core.StandardPipeline.invoke( > >>>> StandardPipeline.java:480) > >>>> at org.apache.catalina.core.ContainerBase.invoke( > ContainerBase.java > >>>> :995) > >>>> at org.apache.catalina.core.StandardContextValve.invoke ( > >>>> StandardContextValve.java:191) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java:643) > >>>> at org.apache.catalina.core.StandardPipeline.invoke( > >>>> StandardPipeline.java :480) > >>>> at org.apache.catalina.core.ContainerBase.invoke( > ContainerBase.java > >>>> :995) > >>>> at org.apache.catalina.core.StandardContext.invoke( > >>>> StandardContext.java:2422) > >>>> at org.apache.catalina.core.StandardHostValve.invoke ( > >>>> StandardHostValve.java:180) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java:643) > >>>> at org.apache.catalina.valves.ErrorDispatcherValve.invoke( > >>>> ErrorDispatcherValve.java :171) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java:641) > >>>> at org.apache.catalina.valves.ErrorReportValve.invoke( > >>>> ErrorReportValve.java:163) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java:641) > >>>> at org.apache.catalina.core.StandardPipeline.invoke( > >>>> StandardPipeline.java:480) > >>>> at org.apache.catalina.core.ContainerBase.invoke ( > ContainerBase.java > >>>> :995) > >>>> at org.apache.catalina.core.StandardEngineValve.invoke( > >>>> StandardEngineValve.java:174) > >>>> at > >>>> > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext > >>>> > >>>> (StandardPipeline.java :643) > >>>> at org.apache.catalina.core.StandardPipeline.invoke( > >>>> StandardPipeline.java:480) > >>>> at org.apache.catalina.core.ContainerBase.invoke( > ContainerBase.java > >>>> :995) > >>>> at org.apache.coyote.tomcat4.CoyoteAdapter.service > >>>> (CoyoteAdapter.java > >>>> :199) > >>>> at org.apache.coyote.http11.Http11Processor.process( > >>>> Http11Processor.java:828) > >>>> at > >>>> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection > >>>> > >>>> (Http11Protocol.java :700) > >>>> at org.apache.tomcat.util.net.TcpWorkerThread.runIt( > >>>> PoolTcpEndpoint.java:584) > >>>> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run( > >>>> ThreadPool.java:683) > >>>> at java.lang.Thread.run(Unknown Source) > >>>> Caused by: org.apache.hivemind.ApplicationRuntimeException: No type > >>>> converter for type org.apache.tapestry.IAsset is available. > >>>> at org.apache.tapestry.coerce.ValueConverterImpl.coerceValue( > >>>> ValueConverterImpl.java :105) > >>>> at > >>>> > $ValueConverter_108c54f6957.coerceValue($ValueConverter_108c54f6957.java) > >>>> > >>>> at org.apache.tapestry.binding.AbstractBinding.getObject( > >>>> AbstractBinding.java:91) > >>>> ... 68 more > >>>> > >>>> On 1/13/06, Jason Suplizio <[EMAIL PROTECTED]> wrote: > >>>> > >>>>> Hi! > >>>>> I've created a customized version of the Shell > >>>>> component...essentially I > >>>>> want to to extend the handling of stylesheet assets to javascripts > >>>>> (write > >>>>> <script> tags embedded in the <head > element). > >>>>> CustomShell.java adds to the original: > >>>>> > >>>>> public abstract IAsset getJavascript(); > >>>>> public abstract Object getJavascripts(); > >>>>> > >>>>> public void renderComponent(IMarkupWriter writer, IRequestCycle > >>>>> cycle) { > >>>>> /** added the following **/ > >>>>> IAsset javascript = getJavascript(); > >>>>> > >>>>> if (javascript != null) > >>>>> writeJavascriptScript(writer, cycle, javascript); > >>>>> > >>>>> Iterator scripts = (Iterator) > >>>>> getValueConverter().coerceValue( > >>>>> getJavascripts(), > >>>>> Iterator.class); > >>>>> > >>>>> while (scripts.hasNext()) > >>>>> { > >>>>> javascript = (IAsset) i.next(); > >>>>> > >>>>> writeJavascriptScript(writer, cycle, javascript); > >>>>> } > >>>>> } > >>>>> private void writeJavascriptScript(IMarkupWriter writer, > >>>>> IRequestCycle cycle, IAsset javascript) > >>>>> { > >>>>> writer.beginEmpty("script"); > >>>>> writer.attribute("type", "text/javascript"); > >>>>> writer.attribute("src", javascript.buildURL()); > >>>>> writer.closeTag(); > >>>>> writer.println(); > >>>>> } > >>>>> > >>>>> CustomShell.jwc adds these to the original: > >>>>> <parameter name="javascript"> > >>>>> <description> > >>>>> If specified, provides an external javascript for the page. > >>>>> </description> > >>>>> </parameter> > >>>>> > >>>>> <parameter name="javascripts"> > >>>>> <description> > >>>>> Array or collection of stylesheet assets. > >>>>> </description> > >>>>> </parameter> > >>>>> > >>>>> > >>>>> However, this isn't working as I'm running into a ValueConverter > >>>>> issue: > >>>>> > >>>>> Exception: "org.apache.hivemind.ApplicationRuntimeException: No type > >>>>> converter for type org.apache.tapestry.IAsset is available. > >>>>> > >>>>> Borrowing from the Shell.jwc file, I notice that the following > service > >>>>> is injected - which apparently implements > >>>>> org.apache.tapestry.coerce.ValueConverterImpl > >>>>> > >>>>> <inject property="valueConverter" object="service: > >>>>> tapestry.coerce.ValueConverter"/> > >>>>> > >>>>> What do I need to do to get my custom shell comp to render the > script > >>>>> assets? Thanks in advance! > >>>>> Jason > >>>>> > >>>>> > >>>> > >>> > >> > >> > > > > > > > -- > ......................................... > > Derick Fernando > Lead Architect > [EMAIL PROTECTED] > (323) 314-9593 > http://www.thelabllc.com > > Content is for intended recipient only. > Copyright 2001-2005, The Lab, LLC > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >