我正在使用JSF 2.3开发CMS。我需要将GET参数传递给指示用户正在管理的站点的每个页面。要做到这一点,我在所有页面中使用<f:viewParam>
,但我有以下疑问:
<f:viewAction>
用于多个托管bean,如下例所示?<f:metadata>
<f:viewParam name="form" value="#{editFormWebBean.formIdParam}"/>
<f:viewParam name="site" value="#{headerWebBean.siteIdParam}"/>
<f:viewAction action="#{editFormWebBean.init}" />
<f:viewAction action="#{headerWebBean.init}" />
</f:metadata>
这有效,但我不确定它是否正常。
<f:viewParam>
的站点参数?我尝试使用includeViewParams,但如果我在源页面和目标页面中不包含<f:viewParam>
(从page1.xhtml到page2.xhtml),则无效3)我可以定义多个<f:metadata>
标签吗?例如,如果我使用模板和多个ManagedBeans pare页面(一个用于标题,一个用于菜单,等等)。
谢谢你,对不起我的英语。
<f:viewParamter>
和<f:viewAction>
,但是请确保这些意图初始化视图“JSF页面”而不是支持bean,在烘焙豆上使用@PostConstruct
来初始化它们,但是你的想法<f:viewAction>
只在GET请求上执行,默认情况下,任何后续POST(回发)请求都不会调用该操作,除非它具有onPostBack="true"
属性。更多关于这些标签可以在这个伟大的答案What can <f:metadata>
, <f:viewParam>
and <f:viewAction>
be used for?找到的template.xhtml
<f:metadata>
<f:viewParam name="site" value="#{headerWebBean.siteIdParam}"/>
<ui:insert name="metadata"/>
</f:metadata>
page.xhtml
<ui:composition template="template.xhtml">
<ui:define name="metadata">
<!-- whatever metadata you want to add-->
</ui:define>
</ui:comosition>
metadata
标签,使用它像上面的例子。