2014-02-05 2 views
0

:수 없습니다 예를 들어

내가 텍스트 영역에서 자바 코드를 입력 :

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); 

내가 "라는 문자열로 위의 코드를받을 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()); 
    }  

saveMessage 방법은 잘 실행 .. 하지만 saveMessage의 모든 서비스 메서드를 호출하면 널 포인터 예외가 발생됩니다. 서비스가 여기에 주입되지 않습니다 .. 빈 스크립트에서 서비스 메소드를 호출하는 방법 ?? 예를 들어

:

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

    } 

답변

0

당신은 어떻게 JavaTest의 인스턴스 또는 호출 한 후 서비스 인스턴스에 액세스 할 수있는의 HashMap를 기대하고 있습니다 (같은 내가 필요)? 스크립트가 평가 한 후에 JavaTest가 일부 정적 변수를 설정하지 않는 한 해당 객체는 GC를 사용할 수 있습니까?

그런 다음 스크립트에 변수를 전달 고려해 평가 스크립트 후 참조를 유지하고자하는 경우 :

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 
} 

을 양자 택일로, 당신은 또한 당신의 스크립트의 변수를 반환 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다 .. javaTest의 인스턴스가 saveMessage 메소드를 올바르게 호출하고 있지만 saveMessage 메소드에서 서비스를 사용할 수 없습니다. 예를 들어, 공공 무효 saveMessage (Map tableDetails) { System.out.println ("=============== 엉망 ============= "+ message.size()); testService.someMethod (tableDetails); } – karthi