日期:2014-05-17 浏览次数:20590 次
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>