自定义JSF组件:将“startElement”与“script”一起使用会产生注释
我正在呈现一个自定义JSF组件。在方法encodeBegin中,我想包含一些java脚本自定义JSF组件:将“startElement”与“script”一起使用会产生注释,jsf,comments,myfaces,custom-renderer,Jsf,Comments,Myfaces,Custom Renderer,我正在呈现一个自定义JSF组件。在方法encodeBegin中,我想包含一些java脚本 public void encodeBegin(FacesContext context) throws IOException { ResponseWriter writer = context.getResponseWriter(); writer.startElement("script", this); writer.writeAttribute("type", "text/jav
public void encodeBegin(FacesContext context) throws IOException {
ResponseWriter writer = context.getResponseWriter();
writer.startElement("script", this);
writer.writeAttribute("type", "text/javascript", null);
writer.writeText("var width=400",null);
writer.endElement("script");
}
呈现组件时,脚本标记的内容将被注释掉
<script type="text/javascript"><!--
var width=400;
//--></script>
有人能解释一下为什么会出现这个评论,以及我是如何摆脱它的吗
提前谢谢 没关系
这种做法是将javascript代码标记为注释,因此自动工具不会尝试将其解析为HTML,例如,检查页面是否符合HTML4的工具
Javascript引擎将忽略HTML注释并处理Javascript注释为/*和的代码//
出于同样的原因,这种方法的一种变体是将Javascript放在CDATA标记中。没问题
这种做法是将javascript代码标记为注释,因此自动工具不会尝试将其解析为HTML,例如,检查页面是否符合HTML4的工具
Javascript引擎将忽略HTML注释并处理Javascript注释为/*和的代码//
出于同样的原因,这种方法的一种变体是将Javascript放在CDATA标记中。这是特定于MyFaces实现的,而不是JSF规范。Mojarra实现没有做到这一点 这种将JavaScript主体放在HTML注释中的方法基本上是HTML史前时代遗留下来的,当时浏览器不支持元素。这些HTML注释基本上隐藏了JavaScript内容,以防止那些古老的HTML解析器将JavaScript代码解释为纯文本并显示出来 另见: 这是HTML中的常见做法,在不支持JS的浏览器中隐藏脚本。在XML时代,注释是它们的本意:注释。在处理文件之前,所有注释都将从文档中删除,因此将脚本包含在其中就像将午餐扔进食人鱼池一样。此外,评论你的脚本真的没有意义——过去十年中编写的任何浏览器都不会在页面上显示你的代码
请注意最后一句话,这是非常正确的,过去十年中开发的任何浏览器都不会再这样做了。MyFaces显然有点过于热心地认为现在人们仍然会使用这样一个史前浏览器。这是MyFaces实现特有的,而不是JSF规范。Mojarra实现没有做到这一点 这种将JavaScript主体放在HTML注释中的方法基本上是HTML史前时代遗留下来的,当时浏览器不支持元素。这些HTML注释基本上隐藏了JavaScript内容,以防止那些古老的HTML解析器将JavaScript代码解释为纯文本并显示出来 另见: 这是HTML中的常见做法,在不支持JS的浏览器中隐藏脚本。在XML时代,注释是它们的本意:注释。在处理文件之前,所有注释都将从文档中删除,因此将脚本包含在其中就像将午餐扔进食人鱼池一样。此外,评论你的脚本真的没有意义——过去十年中编写的任何浏览器都不会在页面上显示你的代码
请注意最后一句话,这是非常正确的,过去十年中开发的任何浏览器都不会再这样做了。MyFaces显然有点过于热心地认为现在人们仍然会使用这种史前浏览器。谢谢你的解释,所以我还是让它保持丑陋吧!:这实际上与自动工具无关。如果一个工具做到了这一点,那将是一个古老的工具或工具中的一个bug。谢谢你的解释,所以我会让它保持丑陋的样子!:这实际上与自动工具无关。如果一个工具做到了这一点,那将是一个古老的工具或工具中的一个bug。谢谢lin,BalusC。我不知道,还有一个Web上下文参数来控制它:Description:在脚本中用xml注释包装内容,以防止旧浏览器显示它。默认情况下这是真的。谢谢林,巴卢斯克。我不知道,还有一个Web上下文参数来控制它:Description:在脚本中用xml注释包装内容,以防止旧浏览器显示它。默认情况下,这是真的。