2016-12-13 1 views
0

У меня есть xe: jsonRpcService, который я хотел бы передать классу csjs. Как это возможно?Передача xe: jsonRpcService в класс csjs

Услуга:

<xe:jsonRpcService id="jsonRpcService1" serviceName="rpcServices"> 
    <xe:this.methods> 

     <xe:remoteMethod name="loadEntity" 
      script="PersonBean.loadEntity(id);"> 
      <xe:this.arguments> 
       <xe:remoteMethodArg name="id" type="string"></xe:remoteMethodArg> 
      </xe:this.arguments> 
     </xe:remoteMethod> 

    </xe:this.methods> 
</xe:jsonRpcService> 

Позвоните в мой класс в выходной сценарий:

formHelper = new FormHeler(rpcServices) ; 

csjs класс:

function Formhelper(service) { 
    //... 
    this.loadEntity = function(id) { 
     //... 
     resultObj = service.loadEntity(id) ; 
     //... 
    } 
} 

Использование rpcServices.loadEntity в классе работ. Но я хотел бы передать его как параметр, поэтому я могу использовать класс с разными службами.

rpcУслуги как параметр для конструктора классов не работают. Есть ли другой способ передать ссылку на услугу и сделать ее доступной в классе?

ответ

0

rpcServices - это серверная часть конечных точек службы REST (this.methods). Вы не можете передать эту коллекцию в CSJS, вы можете передать результат только одной из конечных точек.

Думайте об этом как о попытке передать библиотеку скриптов SSJS в функцию CSJS.

0

Thank's Paul. Получил его для работы, передав имя службы классу. Затем я использую Eval для вызова метода RPC:

var serviceName = "rpcServices" ; 
formHelper = new FormHelper(serviceName) ; 

function FormHelper(serviceName) { 
    this.serviceName = serviceName ; 

    //... 
    this.loadEntity = function(id) { 
     var rpcResultObj = eval(this.serviceName + ".loadEntity(\"" + id + "\")") ; 
    } 
    //... 
} 

Теперь я могу использовать мои методы FormHelper с различными службами.

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