target = "_ blank"を使用して新しいウィンドウを開くことができません。p:commandButtonでtarget = "_ blank"が機能しないのはなぜですか?
p:commandButton
をクリックすると、JavaメソッドのreportsGeneratorResults.jsfが同じウィンドウに読み込まれます。ここで何が間違っているか教えてください。
これは私のJSFコードです:
<ysf:toolbar>
<p:commandButton onclick="blockDiv.show();"
oncomplete="blockDiv.hide();"
action="#{ReportGeneratorBoa.redirctToResults()}"
rendered="#{ReportGeneratorBoa.reportSelectedAt eq 'true'}"
update=":messages"
value="#{bundleGlobal['REPORTS_GENERATOR.consult']}"
ajax="true"
target="_blank"/>
</ysf:toolbar>
そして、これは、Javaメソッドである:
public String redirctToResults(){
try {
if(!ReportUtils.validParameters(paramList)){
setErrorMessage("Los parametros no tienen el formato correcto");
return Constants.FAILURE_OUTCOME.toString();
}
if (!Constants.SUCCESS_OUTCOME.toString().equals(executeSQL())) {
return Constants.FAILURE_OUTCOME.toString();
}
getFlash().put("reportSelected", reportSelected);
getFlash().put("listaResGeneneral", listaResGeneneral);
getFlash().put("resultListK" , resultListK);
getFlash().put("paramList" , paramList);
getFlash().setRedirect(true);
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
context.redirect(context.getRequestContextPath() + "/reportsGeneratorResults.jsf");
return Constants.SUCCESS_OUTCOME.toString();
} catch (Exception e) {
super.setErrorMessage("Error");
LogManager.getLog(getClass()).error(new CustomMapMessage(ErrorCode.VIEW_COMMONS,
ErrorSeverityLevel.HIGH_ERROR_LEVEL), e);
return Constants.FAILURE_OUTCOME.toString();
}
}
UPDATE:
別のスレッドで提案されているように私は、<h:commandButton>
に<p:commandButton>
を変更しようとしました、それでも動作していません。
<ysf:toolbar>
<h:commandButton onclick="blockDiv.show();"
oncomplete="blockDiv.hide();"
action="#{ReportGeneratorBoa.redirctToResults()}"
rendered="#{ReportGeneratorBoa.reportSelectedAt eq 'true'}"
update=":messages" value="#{bundleGlobal['REPORTS_GENERATOR.consult']}"
target="_blank"/>
</ysf:toolbar>
p:からh:に変更した後、間違った属性が多数含まれています。そして、してください、してください、慎重に複製をお読みください – Kukeltje