试图让primefaces dataExporter显示link而不是url的值

时间:2012-03-21 15:35:50

标签: java jsf primefaces

我正在尝试使用primefaces dataExporter导出一些数据,并且我有一个具有人名的列,该名称是指向外部网站的链接。

最初我有以下代码然后我找到了this线程,它说现在数据导出支持h:commandLink

<p:dataTable var="inv" value="#{personBacker.investigators}" id="tbl" rows="50" effect="true">

    <p:column filterBy="#{inv.name}" headerText="Investigator" filterMatchMode="contains">
        <h:outputLink value="http://example.com/">
            <h:outputText value="#{inv.name}" />
        </h:outputLink>
    </p:column>

</p:dataTable>

然后我将我的代码更改为此,但现在链接不会将我带到example.com。根据我在interwebs上发现的内容,commandLink只能使用我认为的EL表达式。

 <p:dataTable var="inv" value="#{personBacker.investigators}" id="tbl" rows="50" effect="true">

        <p:column filterBy="#{inv.name}" headerText="Investigator" filterMatchMode="contains">
            <p:commandLink action="http://example.com" value="#{inv.name}" />
        </p:column>

    </p:dataTable>

如何使用h:commandLink或p:commandLink标记链接到外部站点?

1 个答案:

答案 0 :(得分:1)

我不知道我的建议是否适用于您使用 DataExporter 的设置,但是从 commandLink / commandButton 调用外部链接我使用以下内容在我的设置中:

<p:commandLink value="external link" ajax="false" action="#{bean.externalLink()}" />

<强>豆:

public void externalLink() throws IOException {

    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    // call external link
    String link = "http://www.google.com";
    ec.redirect(link); 
}

另一种方法是尝试直接将链接设置为 html -tag。如果您在代码中显示URL已经知道,那就不难了:

<a href="http://www.example.com">#{inv.name}</a>

我希望这有帮助,玩得开心!