更新ui:从主模板(JSF& Primefaces)定义的表单内容

时间:2012-02-13 15:32:47

标签: jsf primefaces

我的网络应用程序遇到了一些麻烦,基本上我一直收到警告信息:

  

信息:无法在视图中找到标识符为“formName”的组件。

我知道为什么会这样,但我只需要确定它们是否是一个修复/更好的解决方案。

基本上我有一个主模板文件,其中包含许多<p:dialog>组件,这些组件具有各种CRUD功能。当用户与这些组件交互时,我使用内置的primefaces'update'函数来更新<ui:defined>页面中的各种表单/组件。但是,由于JSF web-app(即Master模板和ui:已定义的Web页面)的布局以及我在Master模板文件中定义了这些组件的事实,这意味着可更新的表单/组件不一定在当前视图中并抛出上面的警告消息。

例如:

如果我有我的主模板文件:master.xhtml,其中包含一个名为&lt; p:dialog id="componentA" />的组件。然后我有一个带有<h:form id=page1Form/>的page1.xhtml,同样我有一个带有<h:form id=page2Form/>的page2.xhtml,它们都包含sessioncoped辅助bean提供的信息,这是确保这些信息的最佳方法。如果使用componentA进行CRUD操作,表单会更新?目前我只是使用&lt; p:dialog id="componentA" update="page1Form, page2Form" />,但因为视图中只有page1或page2,所以Tomcat会吐出上述消息。那么是否可以根据我所在的页面动态指定要更新的表单/组件,或者我是否必须在每个<ui:define>页面上指定componentA(这将是许多重复的html /代码而不是特别易于管理)或者是否有更新当前视图中所有表单/组件的方法?或者我正在做的是什么,我应该在我的web.xml中关闭开发模式以停止消息?

干杯

Ally

1 个答案:

答案 0 :(得分:4)

只是为了证实,如果有人偶然发现这个话题。我设法使用<ui:param name="paramName" value:"a value"/>值修复了上述问题。

基本上在您的主模板文件中指定您的组件,例如。

<p:commandButton value="Submit" action="#{someBean.doSomeStuff()}"
update="#{paramName}" />

然后在您的<ui:composition>页面中,您只需说明参数名称及其值:

<ui:param name="paramName" value="someForm someOtherForm"/>

工作好人!