Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自定义JSF组件:将“startElement”与“script”一起使用会产生注释_Jsf_Comments_Myfaces_Custom Renderer - Fatal编程技术网

自定义JSF组件:将“startElement”与“script”一起使用会产生注释

自定义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

我正在呈现一个自定义JSF组件。在方法encodeBegin中,我想包含一些java脚本

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注释包装内容,以防止旧浏览器显示它。默认情况下,这是真的。