3

JSF 2.1 から 2.2 に更新した後、次のエラー メッセージが表示されるようになりました。

The metadata component needs to be nested within a f:metadata tag. Suggestion: enclose the necessary components within <f:metadata>

コードが次のようになっているため、少し奇妙です。

....
 <ui:composition template="./resources/templates/template_base.xhtml">

        <ui:define name="contentBody">

            <h:outputStylesheet library="css/table" name="tableContent.css" />
            <h:outputScript library="javascript" name="pagination.js" target="head" />

            <p:growl id="messages" autoUpdate="true" />

            <f:metadata>
                <f:viewParam name="topicId" value="#{topicBean.topic.id}" />
                <f:event type="preRenderView" listener="#{topicBean.init(true)}" />
            </f:metadata>

        </ui:define>

</ui:composition>
....

エラー メッセージが参照するメタデータ コンポーネントが または のいずれかf:viewParamである場合f:event、それ/それらを で囲みf:metadataます。

私が間違っていることについてのアイデアはありますか?javax.faces.PROJECT_STAGEに設定するとエラーは表示されませんProductionが、終了するまで保持したいと思いDevelopmentます。

Edit1 - バージョン:

  • Netbeans: 7.3.1 (ビルド 201306052037)
  • Java: 1.7.0_25; Java HotSpot(TM) クライアント VM 23.25-b01
  • Runtime: Java(TM) SE ランタイム環境 1.7.0_25-b16
  • Java EE: Java EE 7 ウェブ
  • JSF implementation: モハラ 2.2.0
  • Glassfish: 4.0 ビルド 89
4

2 に答える 2

2

JSF 2.2 のバグが報告されました。私はしばらく前に同じ問題を扱っていました。

https://java.net/jira/browse/JAVASERVERFACES-2803

また、遠ざかりたい場合f:viewActionsもあります。

https://java.net/jira/browse/JAVASERVERFACES-2868

于 2013-07-04T07:38:34.013 に答える
0

まったく同じ構成 (Glassfish、Mojarra 2.2.0) を使用したところ、メタデータ タグで子を 1 つだけ使用し、リスナーをその外側に配置すると、エラー メッセージを回避できることがわかりました。

<f:event type="preRenderView" listener="#{bean.listener()}"/>
<f:metadata>
    <f:viewParam name="par1" value="#{bean.val1}" />
</f:metadata>

2 つの viewParams を使用すると、問題が再び発生します。https: //java.net/jira/browse/JAVASERVERFACES-3080 を参照してください。

最新の Mojarra バージョン (現時点では 2.2.6) にアップグレードすると、問題が解決しました。

于 2014-04-28T08:30:11.230 に答える