<?xml version="1.0" encoding="gb2312"?>
<!-- generator="FeedCreator 1.7.2" -->
<rss version="2.0">
    <channel>
        <title>海波无痕</title>
        <description>海波无痕</description>
        <link></link>
        <lastBuildDate>Thu, 11 Mar 2010 15:14:27 +0800</lastBuildDate>
        <generator>FeedCreator 1.7.2</generator>
        <copyright>海波无痕</copyright>
        <item>
            <title>Missing classpath resource '/dojo-0.4.3/dojo2.js'</title>
            <link>http://ziki.cn/q/index.php/q-b_uuid-19.html</link>
            <description>&lt;p&gt;Missing classpath resource &amp;#39;/dojo-0.4.3/dojo2.js&amp;#39;&lt;/p&gt;&lt;p&gt;Tapestry4.1.5 bug&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://article.gmane.org/gmane.comp.jakarta.tapestry.devel/24877&quot;&gt;http://article.gmane.org/gmane.comp.jakarta.tapestry.devel/24877&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://issues.apache.org/jira/browse/TAPESTRY-2171&quot;&gt;https://issues.apache.org/jira/browse/TAPESTRY-2171&lt;/a&gt;&lt;/p&gt;&lt;p&gt;修改&lt;br /&gt;tapestry-framework-4.1.5.jar&lt;br /&gt;org.apache.tapestry.dojo.html包下ScriptIncludes.jwc文件&lt;br /&gt;按照org.apache.tapestry.html.Shell.jwc的写法 使用 jsManager 控制路径&lt;/p&gt;&lt;p&gt;屏蔽掉&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultDojoSource&amp;quot; path=&amp;quot;classpath:/dojo-0.4.3/dojo.js&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultDojoFormSource&amp;quot; path=&amp;quot;classpath:/dojo-0.4.3/dojo2.js&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultDojoWidgetSource&amp;quot; path=&amp;quot;classpath:/dojo-0.4.3/dojo3.js&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultDojoPath&amp;quot; path=&amp;quot;classpath:/dojo-0.4.3/&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultTapestrySource&amp;quot; path=&amp;quot;classpath:/tapestry/core.js&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;asset name=&amp;quot;defaultTapestryPath&amp;quot; path=&amp;quot;classpath:/tapestry/&amp;quot; /&amp;gt;&lt;br /&gt;增加&lt;br /&gt;&amp;lt;inject property=&amp;quot;valueConverter&amp;quot; object=&amp;quot;service:tapestry.coerce.ValueConverter&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;inject property=&amp;quot;pageService&amp;quot; object=&amp;quot;engine-service:page&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;inject property=&amp;quot;applicationSpecification&amp;quot; object=&amp;quot;infrastructure:applicationSpecification&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;inject property=&amp;quot;baseTagWriter&amp;quot; object=&amp;quot;service:tapestry.url.BaseTagWriter&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;inject property=&amp;quot;jsManager&amp;quot; object=&amp;quot;service:tapestry.js.JavascriptManager&amp;quot; /&amp;gt;&lt;br /&gt;修改&lt;/p&gt;&lt;p&gt;&amp;lt;parameter name=&amp;quot;tapestrySource&amp;quot; default-value=&amp;quot;asset:defaultTapestrySource&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default tapestry source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;tapestryPath&amp;quot; default-value=&amp;quot;asset:defaultTapestryPath&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sets the tapestry path, needed for dojo to properly detect and find tapestry js modules&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when overriding the default dojo bundled with tapestry.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoSource&amp;quot; default-value=&amp;quot;asset:defaultDojoSource&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoFormSource&amp;quot; default-value=&amp;quot;asset:defaultDojoFormSource&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoWidgetSource&amp;quot; default-value=&amp;quot;asset:defaultDojoWidgetSource&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoPath&amp;quot; default-value=&amp;quot;asset:defaultDojoPath&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specifies the default path to the root dojo folder, not the dojo.js file itself. This is&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; used by the djConfig.baseRelativePath javascript configuration variable in dojo.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt; &lt;br /&gt;变为&lt;br /&gt;&amp;nbsp;&amp;lt;parameter name=&amp;quot;tapestrySource&amp;quot; default-value=&amp;quot;ognl:jsManager.tapestryAsset&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default tapestry source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;tapestryPath&amp;quot; default-value=&amp;quot;ognl:jsManager.tapestryPath&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sets the tapestry path, needed for dojo to properly detect and find tapestry js modules&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when overriding the default dojo bundled with tapestry.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoSource&amp;quot; default-value=&amp;quot;ognl:jsManager.firstAsset&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoFormSource&amp;quot; default-value=&amp;quot;ognl:jsManager.firstFormAsset&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoWidgetSource&amp;quot; default-value=&amp;quot;ognl:jsManager.firstWidgetAsset&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If specified, allows for the default dojo source included to be overriden.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name=&amp;quot;dojoPath&amp;quot; default-value=&amp;quot;ognl:jsManager.path&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specifies the default path to the root dojo folder, not the dojo.js file itself. This is&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; used by the djConfig.baseRelativePath javascript configuration variable in dojo.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;</description>
            <author>海波无痕</author>
            <pubDate>Wed, 20 Feb 2008 02:35:12 +0800</pubDate>
        </item>
        <item>
            <title>修改Tapestry3在{yourServlet}.application配置加载存在于classpath中的组件规范</title>
            <link>http://ziki.cn/q/index.php/q-b_uuid-18.html</link>
            <description>&lt;p&gt;修改Tapestry3在{yourServlet}.application配置加载存在于classpath中的组件规范&lt;br /&gt;在Tapestry3中的{yourServlet}.application文件中不能加载配置在classpath中的jwc组件规范&lt;br /&gt;如&lt;br /&gt;&amp;lt;application name=&amp;quot;yourApp&amp;quot; engine-class=&amp;quot;org.apache.tapestry.engine.BaseEngine&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;component-type type=&amp;quot;MyComponent&amp;quot; specification-path=&amp;quot;/com/yourApp/components/MyComponent.jwc&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/application&amp;gt;&lt;/p&gt;&lt;p&gt;这种写法按照常规的应该从classpath拿到组件的规范文件,但Tapestry3中出错拿不到规范文件&lt;br /&gt;tapestry3分别有两个 org.apache.tapestry.IResourceLocation 的实现&lt;br /&gt;org.apache.tapestry.resource.ClasspathResourceLocation&lt;br /&gt;org.apache.tapestry.resource.ContextResourceLocation&lt;br /&gt;分别加载classpath下的资源和webContext下的资源&lt;/p&gt;&lt;p&gt;解决办法&lt;br /&gt;修改org.apache.tapestry.engine.Namespace类&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IComponentSpecification locateComponentSpecification(String type)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String path = _specification.getComponentSpecificationPath(type);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (path == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ApplicationRuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tapestry.format(&amp;quot;Namespace.no-such-alias&amp;quot;, type, getNamespaceId()));&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IResourceLocation location = getSpecificationLocation().getRelativeLocation(path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //hack&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (location.getResourceURL() == null &amp;amp;&amp;amp; path.startsWith(&amp;quot;/&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location = new ClasspathResourceLocation(_specification.getResourceResolver(), path);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //hack&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return _specificationSource.getComponentSpecification(location);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;增加该方法的hack的地方强制从classpath中查找资源&lt;/p&gt;</description>
            <author>海波无痕</author>
            <pubDate>Fri, 18 Jan 2008 03:33:19 +0800</pubDate>
        </item>
    </channel>
</rss>
