JSF:调用backing-bean方法而不渲染页面(使用URL参数)

时间:2012-11-23 14:02:31

标签: jsf primefaces

是否可以按以下方式使用 JSF (PrimeFaces)页面? :

  1. 外部应用程序(不是基于JSF )使用网址参数执行 HTTP GET
  2. JSF 页面读取这些参数(例如,如here所述)并调用支持bean业务方法,而不向用户的浏览器呈现任何内容
  3. 将用户透明地发送到与步骤2中调用的辅助bean方法的导航结果相对应的页面。
  4. 换句话说,步骤 2 PrimeFaces 页面仅涉及调用backing-bean业务方法的副作用,永远不会显示。用户点击步骤 1 的外部应用程序上的链接后,会出现在步骤 3 的页面中。

1 个答案:

答案 0 :(得分:3)

使用<f:viewParam>将GET参数设置为bean属性,并使用<f:event>执行bean操作并使用NavigationHandler以编程方式执行导航。

查看:

<f:metadata>
    <f:viewParam name="foo" value="#{bean.foo}" />
    <f:viewParam name="bar" value="#{bean.bar}" />
    <f:event type="preRenderView" listener="#{bean.action}" />
</f:metadata>

豆:

public void action() {
    // ...

    FacesContext context = FacesContext.getCurrentInstance();
    NavigationHandler navigationHandler = context.getApplication().getNavigationHandler();
    navigationHandler.handleNavigation(context, null, "outcome");
}

请注意,根据具体的功能要求,JSF可能不一定是正确的工具。我会调查您是否为此目的更好地使用servlet filter甚至普通servlet

另见: