如何在右键单击时保留完整URL并同时调用操作(JSF)

时间:2014-03-10 10:58:05

标签: jsf jsf-2

我正在使用JSF 2.0,我在jsf页面上有以下内容

<p:commandLink id="takeLink"
action="#{myQBean.displayApp(app)}" value="Take">
</p:commandLink>

以及由支持bean触发的方法

public String displayApp(App app) {
    markAppAsTaken(app);
    return "SingleAppView?faces-redirect=true&appRefNo="+app.getNo()+"&verNo="+app.getVersionNo();
    }

我的问题是这种方法在点击之前没有将URL绑定到链接,它绑定了#,如果我要右键单击并在新选项卡中打开它将打开同一页面。

我想要<h:link />代码和<h:outputLink />的相同行为 检索整个URL SingleAppView?faces-redirect=true&appRefNo=1&verNo=3而不是#,并调用辅助bean中的方法。

我想要一种方法来调用支持bean中的方法并同时保留完整的URL。

1 个答案:

答案 0 :(得分:-1)

您可以使用以下内容:

<h:link value="Take" outcome="#{myQBean.displayApp}" >
    <f:param name="appNo" value="#{app.No}" />
    <f:param name="verNo" value="#{app.VersionNo}" />
</h:link>

和...

public String displayApp() {
    String appNo = FacesContext.getExternalContext().getRequestParameterMap().get("appNo");
    App app = service.findApp(appNo);
    markAppAsTaken(app);
    return "SingleAppView?faces-redirect=true&includeViewParams=true";
}