<o:commandscript>:引用命名空间的JS函数名

时间:2016-03-11 10:19:24

标签: javascript jsf omnifaces

我正在使用omnifaces .progress { border:solid yellow; border-radius: 30px; } .progress-bar{ background-color: yellow; } 来滚动加载ajax数据。目前这个片段工作正常,但我想知道,如果可以从外部js文件引用一个函数名,以避免在xhtml文件中定义所有这些脚本:

products.xhtml:

<o:commandScript>-tag

我正在寻找......:

products.xhtml:

<o:commandScript name="loadNext" actionListener="#{productBean.loadNext}" render="products"/>
       <script type="text/javascript">
             $('.scrollSpy').on('inview.uk.scrollspy', function() { //UIKit scrollspy listener
                loadNext();
            });
       </script>  

       <h:panelGroup id="products">
           <div class="box scrollSpy">
               ...
           </div>
       </h:panelGroup>

generic.js:

<o:commandScript name="GENERIC.loadNext"
                 actionListener="#{productBean.loadNext}"/>

但是我得到了

 var GENERIC = (function () {

   var my = {};

   my.loadNext = function (){}  //empty

   my.productsLoaded = function (){
    //doSomething
   } 

   $(document).ready(function(){        
      $('.scrollSpy').on('inview.uk.scrollspy', function() { 
             my.loadNext();
      });     
   });      

   return my;

})()

虽然来自generic.js的一般调用工作正常,例如

[o:commandScript 'name' attribute 'GENERIC.loadNext' does not represent a valid script function name.]

提前感谢您的建议。

1 个答案:

答案 0 :(得分:2)

从一开始就没有考虑过这个要求。根据{{​​3}},我已将其修复为当前的2.3 SNAPSHOT。

<o:commandScript> issue 218认为(正确放置)句点无效,并且当名称中存在句号时,省略显式var声明。