2017-12-26 61 views
0

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> 
+0

p:からh:に変更した後、間違った属性が多数含まれています。そして、してください、してください、慎重に複製をお読みください – Kukeltje

答えて

0

私はthis threadでBalusCの答えのおかげで解決策を見つけた:これらは私が行った変更です。それが誰かにとって役に立ちそうな場合に備えてここに投稿します。まず、ajax属性をfalseに設定しました(ターゲット属性と干渉するため)。次に、<p:commandButton>からターゲット属性を削除し、<h:form>に追加しました。ここでは、<p:commandButton>が配置されています。

<h:form target="_blank"> 
//Some code here 
    <ysf:toolbar> 
       <p:commandButton action="#{ReportGeneratorBoa.redirctToResults()}" 
           rendered="#{ReportGeneratorBoa.reportSelectedAt eq 'true'}" 
           update=":messages" 
           value="#{bundleGlobal['REPORTS_GENERATOR.consult']}" 
           ajax="false"/> 
    </ysf:toolbar> 
</h:form> 
関連する問題