在preRenderView之前调用composite的方法

时间:2018-03-21 13:27:28

标签: jsf jsf-2

我有一个JSF 2 .xhtml页面,如下所示:

<h:body>
  <f:event type="preRenderView" listener="#{view.init}" />
  <customComponents:mytable />
</h:body>

复合实现

<composite:implementation>
    <h:form id="tableForm">
      <ui:repeat value="#{view.actions}" var="action">
      <h:outputText value="#{action.start}">
        <f:convertDateTime timeZone="#{view.timeZone}" />
      </h:outputText>
    </h:form>
</composite>

现在,当我加载视图时,复合体的#{view.timeZone}被称为listener={view.init}

我不懂。我希望在调用getter之前调用init消息。你能告诉我错误在哪里吗?

1 个答案:

答案 0 :(得分:0)

preRenderView必须位于f:metadata标记中。例如:

<f:metadata>
  <f:event type="preRenderView" listener="#{view.init}"/>
</f:metadata>

仅供参考,这篇文章也可以帮助你When to use f:viewAction / preRenderView versus PostConstruct?