2013-06-27 54 views
0

我需要通过选择数据表行来转到页面。使用Ajax事件有一些问题。在JSF中通过URL传递参数

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

需要做的最明显的事情是,您需要在该URL中包含includeViewParams=true以使参数在重定向中生存。因此,您将拥有:

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

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