我正在使用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。
答案 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";
}