在JSF中通过URL传递参数

时间:2013-06-27 08:47:10

标签: jsf url jsf-2 primefaces

我需要通过选择数据表行来转到页面。使用ajax事件有一些问题。

FacesContext context = FacesContext.getCurrentInstance();
NavigationHandler navigationHandler = context.getApplication().getNavigationHandler();
navigationHandler.handleNavigation(context, null, "/views/questionnaires/viewDetails.xhtml?faces-redirect=true&questionnaireId=" + 1);

但我还需要将参数传递给目标页面bean。

@ManagedProperty(value = "#{param.questionnaireId}")
private Long questionnaireId;

它不起作用。如何正确地做到这一点?

1 个答案:

答案 0 :(得分:0)

需要做的最明显的事情是,您需要在该URL中包含includeViewParams=true以使参数在重定向后继续存在。所以你会:

  navigationHandler.handleNavigation(context, null, "/views/questionnaires/viewDetails.xhtml?faces-redirect=true&includeViewParams=true&questionnaireId=" + 1);

另一个问题可能是目标bean的范围。根据JSF规范,@ViewScoped bean不是#param bean注入的有效目标