为什么我的表格不能从外面到达<p:accordionpanel>?</p:accordionpanel>

时间:2014-06-17 08:13:07

标签: java forms primefaces

我正在使用<p:accordionPanel>进行简单的表格,基本上,每个标签我都有一个表单,因此,我的<h:form>位于<tab>标记之后,应该如此。 ..并且<p:accordionPanel>之后的开始总是在下一个标签开始之前完成,依此类推......

从理论上讲,一切正常,问题是即使我有结构,我也无法从我的表单中进行更新

<p:accordionPanel>
   <h:form id="formInformation">
      <p:tab title="Information">
          <p:panel id="myPanel">

我的标签是在之前的形式之后,每当我尝试对该表单内的元素进行更新时,它表示该元素根本不存在,为什么会出现这个问题?我应该知道的标签是否有任何特殊限制?

感谢。

编辑:

我试图以这种方式引用我的组件:formInformation:myPanel

没有成功......我总是这样引用我的组件,出于某种原因,<tab>内的所有内容都无法访问

编辑2:

我是从这里打电话的:

<h:form id="main">
    <p:panel id="mainPanel">
    ...
    ...
    <commandButton id="button" ......  update=":formInformation:myPanel">

3 个答案:

答案 0 :(得分:0)

你如何推荐你的组件?  如果您想从外部更新表单中的组件,则必须使用update=":formID:componentID"或简单update=":formID"来更新表单中的整个组件

答案 1 :(得分:0)

因为您的组件是在另一个命名容器中定义的。

您必须向h:form myPanel:formInformation提供“完整路径”,或在:中使用:formInformation之类的update。属性值。

请参阅我的更详细的回答Naming Container in JSF2/PrimeFaces

答案 2 :(得分:0)

将表单放在accordionPanel中会搞砸你的DOM,并使组件内部不呈现。您应该将表格OUTSIDE放在手风琴面板上,正确命名将是:

:form_id:accordionPanel_id:element_id

但是,您可以将form放在tab内(如下所示:)

<p:tab>
  <h:form>
    ...
  </h:form>
</p:tab>

然后命名为:

:accordionPanel_id:form_id:element_id

在您的具体情况下,它将是:

<p:accordionPanel id="myAccordion">
  ...
  <p:tab title="Information">
    <h:form id="formInformation">
      <p:panel id="myPanel">
        ...
      </p:panel>
    </h:form>
  </p:tab>
  ...
</p:accordionPanel>

从另一个容器调用:

<p:commandButton id="button" ......  update=":myAccordion:formInformation:myPanel">