有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javaf:param在bean jsf中为null

我的问题是bean中的参数值为null

在xhtml中,我有以下代码:

<h:commandLink action="#{navigation.editNews}" value="#{new.title}">            
  <f:param name="newsId" value="#{new.id}" />      
</h:commandLink>

在导航中,我重定向到新闻。xhtml

public String editNews(){
    return "editNews";
}

这是faces配置中的代码。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,当我在新闻中按下按钮时,我调用这个方法。xhtml和我试图获取param,但它是空的

FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
String = params.get("newsId"); 

共 (1) 个答案

  1. # 1 楼答案

    <f:param>添加了一个请求参数。所以这个参数的生存期正好是一个HTTP请求。在导航案例中有一个<redirect/>,它基本上指示网络浏览器在给定位置发送一个新的请求。这个新请求不再包含参数

    基本上有两种选择:

    1. 在导航案例中去掉<redirect />

    2. 将其设置为正常的GET请求。如果您使用的是JSF2,请使用<h:link>

      <h:link action="news" value="#{news.title}">            
          <f:param name="newsId" value="#{news.id}" />      
      </h:link>
      

      或者如果你还在使用JSF1。x(由于新的隐式导航特性,导航用例的使用或多或少地暗示了这一点,因为它们在JSF 2中是多余的;或者你必须阅读针对JSF 1.x的过时教程/书籍/答案;而且你的问题上没有JSF 2.0标记是可疑的),然后使用正常的<a>链接

      <a href="news.xhtml?newsId=#{news.id}">#{news.title}</a>
      

    另请参见: