使用application/xml+xhtml内容类型的Dojo

6

如何使Dojo Dijits(目前版本为1.5.0)与XHTML作为application/xml+xhtml一起使用?如果以text/html的形式发送,它可以工作,但需要使用application/xml+xhtml。

这似乎与dijit.form.DatePicker和其他一些控件有关。

这不是针对W3C的验证问题,它根本无法工作。

Error: mismatched tag. Expected: </br>.
Source File: 
Line: 5, Column: 54
Source Code:
  ><div class="dijitReset dijitValidationIcon"><br></div

由于这个错误,JavaScript的执行停止了。

显然,我可以重新编译Dojo,并逐个修复所有问题,但这是很多工作,而且并不能完全解决问题。

再次提醒,它可以在text/html中工作,但需要使用application/xml+xhtml。


可能是Dojo - XHTML验证?的重复问题。 - Andreas Dolk
2
值得一提的是,在1.5版本中,Dijit似乎已经修复了模板中的所有XHTML验证问题。同时需要指出的是,Dojo 1.4.3 / 1.5完全兼容XHTML,罪魁祸首在于Dijit库。 - dante
仍然无法在Dojo 1.5中作为application/xml+xhtml工作。 - mctom987
你使用的是哪种构建类型?你正在进行什么样的设置以生成此错误?你使用的是哪种服务器端技术? - Anh-Kiet Ngo
使用来自Google CDN的最新1.5版本,设置非常简单,只需使用<div dojoType="dijit.form.DateTextBox"></div>。由于JavaScript是前端语言而PHP是后端语言,因此SS不相关。 - mctom987
3个回答

4
这个问题将在即将发布的Dojo Toolkit 1.5版本中得到解决(本周发布),但如果你找到相关的Dijit模板,可以将其更改为
,不会产生任何副作用。

希望这有所帮助。


现在使用的是Dojo 1.5,但仍然存在之前的问题。 - mctom987
这很奇怪,我正在查看1.4.3和1.5的源代码,1.5的源代码中没有你提到的错误。 http://svn.dojotoolkit.org/src/tags/release-1.4.3/dijit/form/templates/ValidationTextBox.html vs http://svn.dojotoolkit.org/src/tags/release-1.5.0/dijit/form/templates/ValidationTextBox.html。你可以看到,在1.5版本中不存在 <br>。 - Anh-Kiet Ngo
实际上,ValidationTextBox的格式确实有误。它应该是这样的:/dex="-1" readonly="readonly" waiRole/,但它写成了这样一个片段:/dex="-1" readOnly waiRole/。请注意只读(readonly)这一部分。 - mctom987

1

我问了一下服务器端的情况,以防你自己创建版本。不管怎样,我知道你不想做单独的补丁和重建工作,但我认为有一个解决方案,可以“打补丁”,但又不必重建。由于构建将字符串内部化到函数构造器中,因此您可以使用扩展功能来更改它。在这种情况下,对于ValidationTextBox,您可以执行以下操作:

dijit.form.ValidationTextBox.extend({
    templateString: "<div>apple sauce</div>"
});

这将获取所有未来实例化的dijit.form.ValidationTextBox并使用新的模板字符串。虽然这可能不是理想的解决方案,但这可能是您在不重建整个项目的情况下解决此问题的唯一方法。可能是以下形式:

dojo.require("dijit.form.ValidationTextBox");
dojo.require("my.ValidationTextBoxFix");

祝你好运。


-1

在 XHTML 中应该有

<br/>

或者

<br></br>

但我很好奇:谁需要 XHTML 以及为什么?


道场正在生成这个,不是我。 - mctom987
所以你需要修复生成无效X(HT)?ML的Dojo,或者提交一个错误报告并等待修复。 - TML

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接