JSF 传递参数并重定向到视图范围



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

我想重定向到一个新页面,并通过选定的类别。

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

你的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")

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

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

它基本上执行以下操作:

  • 按名称 ID 获取请求参数值。
  • 如有必要,转换并验证
  • 它(您可以使用必需的、验证器和转换器的属性,并像 ) 一样在其中嵌套 a 和 )
  • 如果转换和验证成功,则将其设置为 #{bean.id} 表示的 Bean 属性

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

相关内容

  • 没有找到相关文章