如何将#top引用附加到<p:commandlink>?</p:commandlink>

时间:2014-01-21 01:48:13

标签: jsf-2 primefaces

我只是想知道如何将#top之类的引用附加到commandLink的目标操作上?

基本上在我的情况下,<p:commandLink>位于<p:dataTable>并将行值设置为current - bean的属性:

<p:commandLink ajax="false"
               action="#{bean.viewSomePage()}"
               value="#{record.name}">
        <f:setPropertyActionListener value="#{record}"
                                     target="#{bean.current}" />
</p:commandLink>

在bean中viewSomePage() - 方法只提供导航目标:

public String viewSomePage() {
    return "index?faces-redirect=true";
}

浏览器的地址栏显示index.xhtml。但是我怎样才能实现像index.xhtml#status这样的东西?

我想要做的是根据此answer关联<p:tab> <p:tabView>。它已经可以使用,但我无法通过<p:commandLink>链接它。当然,我已经尝试在viewSomePage() - 方法中简单地附加它,但没有成功。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

JSF导航处理程序不支持此功能。您最好的选择是使用所需的URL以及所需的片段标识符手动调用ExternalContext#redirect()

public void viewSomePage() throws IOException {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    ec.redirect(ec.getRequestContextPath() + "/index.xhtml#status");
}

或者如果您恰好使用JSF实用程序库OmniFaces

public void viewSomePage() throws IOException {
    Faces.redirect("index.xhtml#status");
}