"msg" 在什么情况下是保留关键字?

In what context is "msg" a reserved keyword?

以下数据表显示“???messageId???”而不是正确的 ID:

<p:dataTable id="msgTable" var="msg" value="#{msgModel.messages}">
        <p:column headerText="Id">
            <h:outputText value="#{msg.messageId}" />
        </p:column>
</p:dataTable>

经过一些乏味的调试,我发现 将 var 重命名为 "msg"

<p:dataTable id="msgTable" var="msg2" value="#{msgModel.messages}">
        <p:column headerText="Id">
            <h:outputText value="#{msg2.messageId}" />
        </p:column>
</p:dataTable>

在什么情况下 "msg" 是保留关键字? 我找不到任何有关 html、Javascript 或 JSF 的文档?

不是保留关键字。

然而,名称“msg”可识别为 <resource-bundle><var> 的值,如在许多 JSF 教程和启动应用程序的 faces-config.xml 中所见。

<resource-bundle>
    ...
    <var>msg</var>
</resource-bundle>

您收到的错误消息也证实了这一点。当给定键找不到资源包消息时,默认情况下会返回完全相同的键,并用三个问号包围,正如您所观察到的那样:

???key???

另请参阅:

  • Internationalization in JSF, when to use message-bundle and resource-bundle?