Search code examples
javascriptoracle-adfweblogic12cjdeveloperjspx

ADF Jdeveloper - Perform click on button using javascript on JSP


Im trying to perform a click in a button using javascript, I want to execute a method which is supposed to run in a backing bean.

This is my resource

       <af:resource type="javascript">
          function closePopup(event) {
              //var dialog = event.getSource();
              //var popup = dialog.findComponent("pt1:b17");
              //console.log(popup);
              //popup.click();
              //$("#pt1:b17").trigger("click");
              //popup.hide();
              //event.cancel(); document.getElementById('pt1:b17')
              console.log("trigger the event");

              eventFire(document.getElementById(AdfPage.PAGE.findComponentByAbsoluteId('pt1:b17').getClientId()), 'click');
          }

          function eventFire(el, etype) {

              if (el.fireEvent) {
                  console.log("true");
                  el.fireEvent('on' + etype);
              }
              else {
                  console.log("false");
                  var evObj = document.createEvent('Events');
                  evObj.initEvent(etype, true, false);
                  el.dispatchEvent(evObj);
              }
          }
        </af:resource>

Now this is my jsp code:

                                                                 <af:group id="g4">
                                                                    <af:commandButton text="Aceptar" id="b17">
                                                                        <af:fileDownloadActionListener contentType="excelHTML" filename="#{viewScope.mbFiles.file_name}" method="#{viewScope.mbFiles.generateFile}"/>
                                                                    </af:commandButton>
                                                                    <af:button text="test" id="buttonTest">
                                                                        <af:clientListener method="closePoPup" type="action"/>
                                                                    </af:button>
                                                                </af:group>

I cant trigger the method that download my file.

Thanks in advance.


Solution

  • I post the answer in another question:

    https://stackoverflow.com/a/41708683/5120410

    The code is like this:

    The method in Java:

      public void prepareForDownloadAction(ActionEvent act) {
    
    FacesContext context = FacesContext.getCurrentInstance();
    ExtendedRenderKitService erks =
    Service.getService(context.getRenderKit(),
           ExtendedRenderKitService.class);
    
    erks.addScript(context, "customHandler();");
    }
    

    Now this is my method in Javascript:

    <af:resource type="javascript">              
    
          function customHandler(evt) {
              console.log(evt);
    
              var exportCmd = AdfPage.PAGE.findComponentByAbsoluteId("pt1:b17");
              console.log(exportCmd);
              var actionEvent = new AdfActionEvent(exportCmd);
              console.log(actionEvent);
              actionEvent.forceFullSubmit();
              actionEvent.noResponseExpected();
              actionEvent.queue(false);
    
              setTimeout(function(){hidePopup();}, 1000);    
    
    
          }                                    
    
          function hidePopup() {
    
              var popup = AdfPage.PAGE.findComponent("pt1:popupAceptarDescargarPlantilla::content");
    
              popup.hide();
    
          }
    
        </af:resource>
    

    Greatings.