我的问题是bean中参数的值为null
在 xhtml 中我有这样的代码:
<h:commandLink action="#{navigation.editNews}" value="#{new.title}">
<f:param name="newsId" value="#{new.id}" />
</h:commandLink>
在导航中我重定向到 news.xhtml
public String editNews(){
return "editNews";
}
这是faces-config.xml中的代码
<navigation-case>
<from-action>#{navigation.editNews}</from-action>
<from-outcome>editNews</from-outcome>
<to-view-id>/news.xhtml</to-view-id>
<redirect />
</navigation-case>
我有一个 bean,当我按下 news.xhtml 中的按钮时,我会调用方法,并尝试获取参数,但它为空
FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
String = params.get("newsId");
The <f:param>
添加请求参数。所以这个参数的生命周期恰好是一个 HTTP 请求。你有一个<redirect/>
在您的导航案例中,它基本上指示网络浏览器发送new对给定位置的请求。这个新请求不再包含该参数。
你基本上有两个选择:
摆脱<redirect />
在导航案例中。
-
改为普通的 GET 请求。如果您使用的是 JSF2,请使用<h:link>
反而。
<h:link action="news" value="#{news.title}">
<f:param name="newsId" value="#{news.id}" />
</h:link>
或者,如果您仍在使用 JSF 1.x(导航案例的使用或多或少暗示了这一点,因为由于新的隐式导航功能,它们在 JSF 2 中是多余的;或者您必须阅读针对的过时教程/书籍/答案JSF 1.x;您的问题上缺少 JSF 2.0 标记也是可疑的),然后使用正常的<a>
链接代替。
<a href="news.xhtml?newsId=#{news.id}">#{news.title}</a>
也可以看看:
- JSF 2.0 中的通信 - 处理 GET 请求参数 http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ProcessingGETRequestParameters
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)