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]

Reply via email to