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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值