有没有办法避免在Apache Wicket中转义javascript标签?

时间:2011-11-29 01:39:17

标签: javascript wicket knockout.js

我正在尝试使用KnockoutJS和默认的jQuery.tmpl模板引擎,我的标记由Apache Wicket输出。

我发现Wicket正在改变我的javascript tmpl模板:

<script type="text/x-jquery-tmpl" id="myTemplate">
    Hello, ${world}!
</script>

进入这个:

<script type="text/x-jquery-tmpl" id="myTemplate">
    /*<![CDATA[*/
    Hello, ${world}!
    /*]]>*/
</script>

哪些可能会让KnockoutJS变得糟透了。

如果Wicket允许您禁用此类内容,是否有任何想法?

1 个答案:

答案 0 :(得分:3)

在Wicket&#39; s JavascriptUtils中定义了与KnockoutJS混淆的<!--/*--><![CDATA[/*><!--*/\n字符串。看看它的writeJavascript()方法。

对于通过HeaderResponse.renderJavascript()HeaderResponse.renderOnEventJavascript()进行的每个标题贡献,将无条件地添加此前缀/后缀。

我从来没有必要改变这一点,但这种行为似乎非常不变,Wicket似乎不允许您为应用程序指定自定义HeaderResponse类,因此您可以覆盖JavascriptUtils的使用。 / p>

你是如何贡献js的?它是否在页面构建时动态生成? 如果您使用HeaderContributor.renderJavascriptReference()提供了javascript,那么您可能会对此进行排序,尽管这可能不适合您。

不太相关,但Apache Wicket用户列表中的this discussion可能表示此处的真正问题是KnockoutJS。