java - 选择数据表行时打开新页面(导航到新站点)

标签 java jsf primefaces

在 SO 和 elsewhere 上有几个关于此主题的相关问题,但我找不到关于这个特定问题的明确答案。

我有一个 p:dataTable,我希望可以单击一行并打开详细信息页面(一个新页面,而不是对话框或窗口)。

我已经用这种方法解决了(我从 primefaces 网站上得到的,由于某种原因它不再存在:http://web.archive.org/web/20101001223235/http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf):

<p:dataTable var="order" value="#{orderBean.orders}" selection="#{orderBean.selectedOrder}" selectionMode="single" rowKey="#{order.number}">
  <p:ajax event="rowSelect" listener="#{orderBean.orderSelect}"/>
  <p:column ... />
</p:dataTable>

然后在 bean 中执行导航:

public void orderSelect(SelectEvent event) {  
  ConfigurableNavigationHandler nh = (ConfigurableNavigationHandler)FacesContext.getCurrentInstance().getApplication().getNavigationHandler();
  nh.performNavigation("orderDetail?faces-redirect=true");
}

我的问题:有没有一种方法可以在 JSF 内部执行此操作而无需辅助 bean 的帮助?

我之所以问,是因为他们从 primefaces 网站上删除了代码示例,这可能表明这不是做类似事情的正确方法。

最佳答案

将感兴趣的细胞包裹在一个简单的 <h:link> 中.

<p:column>
    <h:link outcome="orderDetail">
        ...
    </h:link>
</p:column>

必要时使用 CSS display:block在链接上让它跨越整个单元格。如有必要,您可以使用嵌套的 <f:param> 传递请求参数.

关于java - 选择数据表行时打开新页面(导航到新站点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632655/

相关文章:

jsf - OmniFaces CombinedResourceHandler 不合并 JavaScript 资源

jsf - 如何在 JSF 中获取和设置 session 范围内的对象?

ajax - JSF/Primefaces AJAX请求真的是异步的吗?

java - 如何使用 Dozer 或 ModelMapper 将 LocalDate 映射到 Date?

java - 将时间添加到每天 9 小时

jsf - 如何创建 <ui :include> tag programmatically?

html - Primefaces数据表resizableColumns无法正常使用

jsf - 如何在不同的 h 中重新渲染组件 :form?

Java - 通过 3 个点构建样条线

java - 如何在扫描外部文件匹配后仅打印一次 "NO MATCH FOUND"?