2

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

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

<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 必须是视图范围,所以它不起作用。

4

2 回答 2

8

你的ViewScoped豆子应该没有问题。使用此代码:

<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")
于 2013-01-23T20:00:33.637 回答
2

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

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

它基本上做了以下工作:

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

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

于 2013-01-23T20:02:17.633 回答