jsf - “找不到带表达式的组件”

时间:2014-08-02 01:30:18

标签: java jsf primefaces

我正在使用PrimeFaces,一个layoutUnit内的组件必须更新另一个layoutUnit内的组件:

<p:layout>
  <p:layoutUnit position="west" size="275" resizable="true" closable="true" collapsible="true">
    <h:form id="formWest">
      <div id="west">
        <ui:insert name="west"></ui:insert>
      </div>
    </h:form>
  </p:layoutUnit>
  <p:layoutUnit id="layout_center" position="center">
    <h:form id="formCenter">
      <div id="content">
        <ui:insert name="content"></ui:insert>
      </div>
    </h:form>
  </p:layoutUnit>
</p:layout>

错误消息为:Caused by: javax.faces.FacesException: Cannot find component with expression "formWest:execucao" referenced from "formCenter:form:mapaGoogle".

需要更新的组件位于td内,所以我做了<td jsf:id="execucao">,例如。

1 个答案:

答案 0 :(得分:16)

如您所知,当您从其他表单引用组件时,您必须将表单ID附加到组件ID。

当您以不同的形式引用组件时,您还需要知道必须在表单ID之前附加另一个:

示例:

<h:form id="form1">
    <p:inputText id="input1" />
</h:form>

现在,如果我想从另一种形式更新input1,我必须使用:

:form1:input1

示例:

<h:form id="form2">
   <p:commandButton update=":form1:input1" />
</h:form>

在您的情况下使用:

:formWest:execucao