2016-04-22 16 views
0

Ich versuche, ein Attribut von JavaScript-Funktion mit übergeben, es ist Arbeit, aber "vorherigen Wert" in der ersten Zeit anzeigen und den richtigen Wert zum zweiten Mal anzeigen.Übergabe dynamisches Attribut von ADF zu Javascript

Hier ist mein Code

ADF:

<af:form id="f1" binding="#{backingBeanScope.backing_js_page.f1}"> 
     <af:inputText label="Name" id="it1" binding="#{backingBeanScope.backing_js_page.it1}" value="#{backingBeanScope.backing_js_page.name}" 
         autoSubmit="true" partialTriggers="it1"> 

     </af:inputText> 
     <af:button text="Say Hello" id="b1" binding="#{backingBeanScope.backing_js_page.b1}"> 
       <af:clientAttribute name="name" value="#{backingBeanScope.backing_js_page.it1.value}"/> 

      <af:clientListener method="sayHello" type="click"/> 
     </af:button> 
     <af:resource type="javascript" source="/resources/js/hello.js"/> 
    </af:form> 

Javascript-Code:

function sayHello(evt) { 
var comp = evt.getSource(); 
alert(comp.getProperty('name')); 
evt.cancel(); 
} 

Antwort

0

Sie können eine Javascript-Funktion in Ihrem adf Bean laufen:

jsff:

<af:button text="Say Hello" id="b1" actionListener="#{Scope.Bean.onClick}"> 
    </af:button> 

adf Bohne:

public void onClick(ActionEvent actionEvent) { 
    String myJavaVariable = "hello World"; 
    String jsCode="alert('"+myJavaVariable+"');"; //YOUR JS SCRIPT WITH JAVA VARIABLES EMBEDED 
    this.executeJavaScript(jsCode); 
    } 

public static void executeJavaScript(String jsCode) { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    ExtendedRenderKitService erks = Service.getRenderKitService(context, ExtendedRenderKitService.class); 
    erks.addScript(context, jsCode); 
} 
+0

Die executeJavaScript Funktion aus einer Reihe von Komfortfunktionen für den Umgang mit ADF Bindungen genommen wird: ADFUtils http://jdeveloper-adf.googlecode.com/svn/trunk/TGPrototype2/ViewController /src/com/tgslc/defaultManagement/utils/ADFUtils.java – MrAdibou

Verwandte Themen