我需要通过选择数据表行来转到页面。使用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;
它不起作用。如何正确地做到这一点?
答案 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注入的有效目标