我正在使用JSF 2.3开发CMS。我需要将GET参数传递到每个页面,以指示用户正在管理的站点。为此,我在所有页面中都使用<f:viewParam>
,但是我有以下疑问:
<f:viewAction>
,如下例所示? <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,但如果我在源页面和目标页面(从page1.xhtml到page2.xhtml)中不包含<f:viewParam>
,则无法正常运行 3)我可以定义多个<f:metadata>
标签吗?例如,如果我使用模板和多个ManagedBeans pare页面(一个用于标题,一个用于菜单,依此类推)。
谢谢你,对不起我的英语。
答案 0 :(得分:0)
可以同时拥有尽可能多的<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?
使用JSF的模板功能将其放在模板中,如下所示:
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
标签,请像上面的示例一样使用它。