`
yourenyouyu2008
  • 浏览: 292006 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

facelet .xhtml页面里的注释,不让注释的内容执行

阅读更多

1).xhtml中的注释同xml注释

<!--

<h:selectOneMenu value="#{selectedOrder.customer}" rendered="#{selectedOrder!=null}">
                <s:selectItems var="_user" value="#{testLazyAction.allUsers()}" noSelectionLabel="please select" label="#{_user.name}"></s:selectItems>
                <s:convertEntity></s:convertEntity>
            </h:selectOneMenu>

-->

2)注释的内容中不能有“--”,下面的注释会报错

<!--

<h:selectOneMenu value="#{selectedOrder.customer}" rendered="#{selectedOrder!=null}">
                <s:selectItems var="_user" value="#{testLazyAction.allUsers()}" noSelectionLabel="-----" label="#{_user.name}"></s:selectItems>
                <s:convertEntity></s:convertEntity>
            </h:selectOneMenu>

-->

3)最重要的一点是注释的内容只是不显示,但会正常执行,里面的el表达式会被执行,所以必须保证注释里的内容是正确的才行,尽量不要注释,他会留下隐患。

 

下面的代码显示页面时会照样执行#{testLazyAction.allUsers()}。

<!--

<h:selectOneMenu value="#{selectedOrder.customer}" rendered="#{selectedOrder!=null}">
                <s:selectItems var="_user" value="#{testLazyAction.allUsers()}" noSelectionLabel="please select" label="#{_user.name}"></s:selectItems>
                <s:convertEntity></s:convertEntity>
            </h:selectOneMenu>

-->

这样产生错误很难会被发现,因为你都不清楚产生错误的方法是什么时候调用的(你注释的代码,所以你认为这段代码是不存在的),我们曾经被这样的错误迷惑了很久,通过全文搜索找到了使用的地方,虽然被注释了却照样会执行。

解决办法 :在web.xml中配置facelets属性,这样被注释的代码就不会被执行了。

    <context-param>
        <param-name>facelets.SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics