我正在使用官方Java EE教程中的示例,其中包含以下内容:
<h:panelGrid columns="2"
headerClass="list-header"
styleClass="list-background"
rowClasses="list-row-even, list-row-odd"
summary="#{bundle.CustomerInfo}"
title="#{bundle.Checkout}"
role="presentation">
但是编译器说没有为h:panelGrid
组件定义属性角色。如何解决这个问题?
答案 0 :(得分:2)
该属性是在JSF 2.2中引入的。作为证据,JSF 2.2 <h:panelGrid>
documentation中提及role
属性,但JSF 2.1 <h:panelGrid>
documentation中未提及。
您的问题历史记录确认您在GlassFish 4.0上使用JSF 2.2,因此此编译器警告实际上是错误的。这不是JSF问题,而是IDE问题。 IDE以某种方式认为您不使用JSF 2.2,而是使用JSF 2.1或更早版本。即您的工具集正在对您不利。您没有提到您正在使用的IDE,因此无法发布正确的答案。
如果项目运行良好且JSF页面产生正确的HTML输出(即role
属性实际上最终生成的HTML <table>
元素,您可以通过右键单击看到,查看源代码在webbrowser中),然后一切都很好,只是IDE假装比实际更聪明。
我开始在IDE项目的属性中窥视,以检查JSF版本是否正常。项目属性中的JSF方面必须设置为2.2版本,而不是更低。必须声明faces-config.xml
符合JSF 2.2,而不是更低。