我正在使用<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">
答案 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">