我的网络应用程序遇到了一些麻烦,基本上我一直收到警告信息:
信息:无法在视图中找到标识符为“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
答案 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"/>
工作好人!