隐式导航 - 未设置 GET 参数
Posted
技术标签:
【中文标题】隐式导航 - 未设置 GET 参数【英文标题】:Implicit Navigation - GET parameter not set 【发布时间】:2016-03-28 12:03:02 【问题描述】:我的一个 ManagedBeans 中有一个方法将重定向到另一个页面,它也应该在 URL 上附加一个 id。
例如。
public String editForm(String formId)
return "designer?id=" + formId;
我从我的主页上这样称呼它
<p:menuitem value="View/Edit" icon="ui-icon-search"
action="#formsView.editForm(formsView.selectedForm.id)" />
然后我有一个在设计器页面中使用的 @ViewScoped
bean,在它的 @PostConstruct
我有这样的东西
@PostConstruct
public void init()
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String formId = params.get("id");
...
但是 id 键似乎没有出现在参数Map
中,我做错了什么?
【问题讨论】:
【参考方案1】:...这将重定向到另一个页面...
您实际上并没有执行重定向。你正在执行前锋。您实际上并没有使用其中的参数创建新的 HTTP 请求。您在当前所在的 HTTP 请求的 HTTP 响应中显示目标页面。要了解差异,请访问 What is the difference between redirect and navigation/forward and when to use what?
您需要执行真正的重定向。您需要创建一个全新的 HTTP 请求。您可以通过将预定义的 faces-redirect=true
参数附加到查询字符串来做到这一点。
public String editForm(String formId)
return "designer?faces-redirect=true&id=" + formId;
您可以通过查看浏览器的地址栏来确认它的工作。 id
参数必须出现在那里才能使其最终出现在请求参数映射中。
但是,如果您打算从 URL 中隐藏它,因此您实际上根本不想执行重定向,而是真正的转发,那么您应该寻找一种不同的方法来传递数据:@ 987654322@.
【讨论】:
以上是关于隐式导航 - 未设置 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章