h:commandbutton仅在重定向到新选项卡中的不同页面时调用bean方法

时间:2013-12-20 18:33:05

标签: javascript jquery-ui jsp jsf jsf-2

我正在使用jsf h:commandButton。我的要求是基于Button的值,我必须处理动作。我使用了以下

<h:commandButton id="raisecm" render="@all " styleClass="btn btn-primary" execute="@this"
                             value="#{scenarioConfigurationMB.status}"
                             actionListener="#{scenarioConfigurationMB.createPatchingCMTicket()}"
                             onclick="if(this.value=='Edit Ticket'){this.form.target='_blank';}">

            </h:commandButton>

此状态可以是“创建故障单”或“编辑故障单”。如果状态为“创建故障单”,则必须在Backing Bean方法“createPatchingCMTicket”中创建故障单,否则如果状态为“编辑故障单”,则必须在新选项卡中返回打开页面以显示其详细信息。

支持bean的方法如下:

  public String createPatchingCMTicket() {
    System.out.println("***********************Ticket ID"+ ticketId);
    ticketId="123";
    System.out.println("Checking Status of  CM Ticket For Patching ......");
     if (status.equals("Edit Ticket")) {
        System.out.println("*********Status is \"Edit Ticket\"");
        try{
            ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
            externalContext.redirect("/cm/view_ticket.xhtml?changeTicketId="+ticketId);
              } catch(Exception e){
            System.out.println("Redirection Failed........`enter code here`..................***************");
            throw new FacesException("Redirection failed......");
        }

        System.out.println("********Redirected........");
        return null;
    }

    System.out.println("Creating Ticket.............***********");
        log.info("Creating CM Ticket For Patching ......");

  //Code for Creating Ticket

}

如果我在h:commandButton中使用上述概念,如果状态是“编辑故障单”,它工作正常并重定向到新选项卡中的另一个URL,但仅用于第一次单击,如果我再次单击“编辑故障单” '它在新标签页中打开相同的基页,而不是重定向到新页面。

我为解决这个意想不到的问题付出了很多努力。 请帮助。

0 个答案:

没有答案
相关问题