2012-02-13 47 views
1

我有我的web应用程序有点麻烦,基本上我不断收到一个警告消息:更新界面:从主模板(JSF和Primefaces)定义形式的内容

信息:无法找到标识成分“formName”在视图中。

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

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

例如:

如果我有我的主模板文件:一个叫< p:dialog id="componentA" />组件master.xhtml。然后我有page1.xhtml与<h:form id=page1Form/>和类似的我有一个page2.xhtml与<h:form id=page2Form/>,它们都包含由会议后台支持bean提供的信息,如果CRUD操作发生时确保这些表单被更新的最佳方法是什么使用componentA?目前,我只是使用< p:dialog id="componentA" update="page1Form, page2Form" />,但由于只有page1或page2在视图中,Tomcat吐出了上述消息。那么是否有可能根据我所在的页面动态指定要更新的表单/组件,还是必须指定每个页面上的componentA(这将会有很多重复的html /代码,并且不是特别易于管理),或者是否存在更新当前视图中所有表单/组件的方法?或者是我正在做的是正确的,我应该关闭我的web.xml中的开发模式以停止消息?

干杯

盟友

+1

你可以拉起h:表单放在ui周围:insert?这种方式形式将是您的网页的静态部分,并始终存在。 – mrembisz 2012-02-13 15:49:56

+1

我想我可以使用ui:param标签动态设置要更新的表单/组件,具体取决于您所在的页面。 – Ally 2012-02-13 17:04:26

+0

听起来不错,如果它适合你的结构。 – mrembisz 2012-02-13 18:51:24

回答

3

只是为了确认,如果有人绊倒在这个线程。我设法通过使用<ui:param name="paramName" value:"a value"/>值来解决我的上述问题。

基本上在主模板文件中指定喜欢你的组件你会即

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

然后在你的页面<ui:composition>您只需状态PARAM名称和值:

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

工作岗位goodun!