【问题标题】:JSF Passing parameter and redirecting to view scopeJSF 传递参数并重定向到视图范围
【发布时间】:2013-01-23 19:37:21
【问题描述】:

我正在尝试将参数传递给其他页面。我有一个图像类别,并且该列表在会话范围内,在我的标题模板中为每个类别创建一个链接。

我想重定向到一个新页面,并传递所选类别。

<h:dataTable id="categoryMenu" value="#{menuBean.listCategory}" var="category">
    <h:column>
        <h:link value="#{category.name}"
     outcome="/image/imageList.xhtml" >
        </h:link>
    </h:column>
</h:dataTable>

但现在我希望我的页面 imageList.xhtml 与 ImageListBean.java 关联得到所选类别。

我尝试了很多方法,通过 f:param 请求 GET 参数,但是因为我的 ImageListBean.java 必须是视图范围,所以它不起作用。

【问题讨论】:

    标签: jsf parameters


    【解决方案1】:

    您的ViewScoped bean 应该没有问题。使用此代码:

    <h:link value="#{category.name}" outcome="/image/imageList.xhtml">
      <f:param name="categoryName" value="#{category.name}"/>
    </h:link>
    

    您应该能够通过以下方式在您的支持 bean 中访问此参数:

    FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("categoryName")
    

    【讨论】:

      【解决方案2】:

      您是否在 imageList.xhtml 上尝试过 viewParam

      <f:metadata>
          <f:viewParam name="id" value="#{bean.id}" />
      </f:metadata>
      

      它基本上做了以下事情:

      • 通过名称id获取请求参数值。
      • 如有必要,对其进行转换和验证(您可以使用 required、validator 和 converter 属性,并像 with 一样在其中嵌套 a 和)
      • 如果转换和验证成功,则将其设置为 #{bean.id} 表示的 bean 属性

      您可以在结果链接上传递类别 ID(例如 imageList.xhtml?id=1)并在您的 ImageListBean 上检索它,一旦您拥有“id”参数,您就可以在您的数据库中获得类别搜索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-28
        • 2012-01-26
        • 1970-01-01
        相关资源
        最近更新 更多