2016-04-22 3 views
0

Я пытаюсь передать атрибут из функции javascript с помощью, это работает, но отображает «предыдущее значение» в первый раз и отображает правильное значение во второй раз.Передача динамического атрибута из ADF в javascript

Вот мой код

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 код:

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

ответ

0

Вы можете запустить яваскрипт функцию внутри ADF боба:

jsff:

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

ADF боб:

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

Функция executeJavaScript берется из ряда удобных функций для работы с ADF Bindings: ADFUtils http://jdeveloper-adf.googlecode.com/svn/trunk/TGPrototype2/ViewController /src/com/tgslc/defaultManagement/utils/ADFUtils.java – MrAdibou

 Смежные вопросы

  • Нет связанных вопросов^_^