2013-06-27 493 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豆注入