簡體   English   中英

無法在bean shell腳本中注入服務或在bean shell中調用服務方法

[英]Unable to inject service in bean shell script or call a service method in bean shell

例如:

我在textarea中輸入Java代碼:

package com.test.webapp.controller;
import org.activiti.engine.impl.persistence.entity
import com.test.webapp.controller;
import java.util.HashMap;


HashMap message = new HashMap();
message.put("table","TEST");
message.put("ID","1236");
message.put("NAME","Three");
message.put("AREA","chennai");
JavaTest javaTest = new JavaTest();
javaTest.saveMessage(message);

我在Java控制器中以字符串形式“ javaEvent”收到上述代碼

public @ResponseBody void executeJavaCode(@RequestParam("javaEvent") String javaEvent) {
    Interpreter interpreter = new Interpreter();  
    interpreter.eval(javaEvent);
}




public void saveMessage( Map<String, String> tableDetails) {
    System.out.println("===============mess============="+message.size());
    }    

Java代碼中的saveMessage方法可以很好地執行..但是在saveMessage中調用任何服務方法都會引發空指針異常。 服務沒有在這里注入..如何在bean腳本中調用服務方法?

例如:(我需要這樣)

public void saveMessage( Map<String, String> tableDetails) {
    System.out.println("===============mess============="+message.size());
    testService.someMethod(tableDetails);

    }  

您希望在調用后如何在服務實例中訪問JavaTest或HashMap實例? 腳本評估后,那些對象才有資格使用GC,除非JavaTest設置了一些靜態變量?

如果希望在腳本求值后保留引用,請考慮將變量傳遞到腳本中:

public @ResponseBody void executeJavaCode(@RequestParam("javaEvent") 
       String javaEvent) {
    Interpreter interpreter = new Interpreter();  
    message = new HashMap();
    interpreter.set("message", message); 
    interpreter.eval(javaEvent);
    // do stuff to message
}

另外,您也可以從腳本中返回變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM