[Tapestry4] T 4.1.6 组件冲突问题

yichou 2008-12-17
在一个页面中,同时使用 shell body 和 form 组件的时候。会报一个Dojo的JS错误。

可能是 下面的2个JS冲突了。
<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo.js"></script>
<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo2.js"></script>

请教怎么解决?
tapestry 2008-12-17
确定是因为这个原因么,我这里两个js在一个页面,没有报错呀。你在看一下,错误信息贴一下。
yichou 2008-12-17
我只是估计 确实报Js错误!但是对功能没有影响!
谢谢 tapestry 大哥。明天上个截图!
yichou 2008-12-18
下面是代码
用 shell 和 body 组件是时候

源代码
<html jwcid="@Shell" title="测试">   
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</HEAD>
<body jwcid="@Body">
  测试
</BODY>
</html>


html源代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<head>
<meta name="generator" content="Tapestry Application Framework, version 4.1.6-SNAPSHOT" />
<meta http-equiv="Content-Type" content="text/html;charset=GBK" />
<title>&#27979;&#35797;</title>
<script type="text/javascript">djConfig = {"baseRelativePath":"/assets/static/dojo-0.4.3-custom-4.1.6/","parseWidgets":false,"locale":"zh-cn"} </script>

<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo.js"></script>
<script type="text/javascript">
dojo.registerModulePath("tapestry", "/assets/static/tapestry-4.1.6");
</script>
<script type="text/javascript" src="/assets/static/tapestry-4.1.6/core.js"></script>
<script type="text/javascript">
dojo.require("tapestry.namespace");
tapestry.requestEncoding='GBK';
</script>
</head>   
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</HEAD>
<body id="Body">
  测试
</body>
</html>

在源代码中加上 Form 组建
<html jwcid="@Shell" title="测试">   
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</HEAD>
<body jwcid="@Body">
<form jwcid="@Form">
测试
</form>
  </BODY>
</html>


html源代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta name="generator" content="Tapestry Application Framework, version 4.1.6-SNAPSHOT" />
<meta http-equiv="Content-Type" content="text/html;charset=GBK" />
<title>&#27979;&#35797;</title>
<script type="text/javascript">djConfig = {"baseRelativePath":"/assets/static/dojo-0.4.3-custom-4.1.6/","preventBackButtonFix":false,"parseWidgets":false,"locale":"zh-cn"} </script>

<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo.js"></script><script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo2.js"></script>
<script type="text/javascript">
dojo.registerModulePath("tapestry", "/assets/static/tapestry-4.1.6");
</script>
<script type="text/javascript" src="/assets/static/tapestry-4.1.6/core.js"></script>
<script type="text/javascript">
dojo.require("tapestry.namespace");
tapestry.requestEncoding='GBK';
</script>
</head>   
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>测试</title>
</HEAD>

<body id="Body">

<form method="post" action="/Test,$Form.direct" id="Form">
<div style="display:none;" id="Formhidden"><input type="hidden" name="formids" value="" />
<input type="hidden" name="seedids" value="BrO0ABXdQAE4sc2VydmljZSQwLHBhZ2UkMCxjb21wb25lbnQkMCxjb250YWluZXIkMCxzZXNzaW9uJDAsc3AkMCxTaGVsbCQwLEJvZHkkMCxGb3JtJDA=" />
<input type="hidden" name="submitmode" value="" />
<input type="hidden" name="submitname" value="" />
</div>
</form>
  测试
<script type="text/javascript"><!--
tapestry.addOnLoad(function(e) {
dojo.require("tapestry.form");tapestry.form.registerForm("Form");});
// --></script></body>
</html>


上面的页面加载的时候会报JS错误
Could not load 'nls.dojo_zh-cn';last tried '__package__.js'

错误是dojo.js 抛出的。

大哥们 帮忙看看啊!
jimlaren 2008-12-18
我没用shell,你用这个试一下,把shell去掉
<span jwcid="@ScriptIncludes" debugEnabled="ognl:false" browserLogLevel="CRITICAL" />
yichou 2008-12-18
jimlaren 写道
我没用shell,你用这个试一下,把shell去掉
<span jwcid="@ScriptIncludes" debugEnabled="ognl:false" browserLogLevel="CRITICAL" />

谢谢 jimlaren 换了之后 错误还是一样!

yichou 2008-12-18
现在已经确定
确实是
<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo.js"></script> 
<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo2.js"></script>

冲突了
在 生成的HTML源代码中 注释 Dojo2.js 页面就正常了。

现在是问题是,为什么 @Shell @Body 和@Form 一起使用是时候 tapestry会引入
<script type="text/javascript" src="/assets/static/dojo-0.4.3-custom-4.1.6/dojo2.js"></script>


有什么办法解决吗?
wobu20 2008-12-19
我也用4.1.6,@Shell、@Body、@Form一起使用并没有出现任何问题,是否有可能是导入的包有问题呢?
yichou 2008-12-19
。。。
不会是包的问题!
我们的系统已经完成了,一直都用T4.1.6.
yichou 2008-12-22
没有办法了。。
只能先把
\tapestry-project-4.1.6\src\tapestry-framework\src\descriptor\META-INF\tapestry.js.xml

中的
   <set property="formFiles" value="classpath:/dojo-0.4.3-custom-4.1.6/dojo2.js"/>

2去掉了!
Global site tag (gtag.js) - Google Analytics