我使用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。
您可以在以下几行中使用:
<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";
}