2013-07-03 3 views
0

MVel 표현식이 참이면 속성의 값을 설정해야합니다. 아무도 나를 어떻게 도와 주실 수 있습니까? 아래Mvel 값을 설정하는 방법

예제 코드 :이 문제에 대한 해결책이지만, 당신이 사용 사례에 더 정교한 수

 LineItem lineItem = new LineItem(); 

     Address address = new Address(); 
     address.setAddress1("ABC"); 
     address.setAddress2("PA"); 

     lineItem.setShipFromAddress(address); 

    ParserContext parserContext = ParserContext.create(); 
    parserContext.stronglyTyped().withInput("lineItem",LineItem.class) 
      .withInput("shipFromAddress", Address.class); 

     Object compiledWithSet = MVEL.compileExpression("(shipFromAddress.address1 contains 'ABC' || shipFromAddress.address1 contains 'ABC DEF') && (shipFromAddress.address2 contains 'PA') ? setShipFromLocation('PA1') : ",parserContext); 
     MVEL.executeExpression(compiledWithSet, lineItem); 

답변

0

. 여기에 작은 샘플 답변이 있습니다. 시작하면 도움이 될 수 있기를 바랍니다. 그래서 여기

public class MyMaths { 

    int a; 

    public int getA() { 
     return a; 
    } 

    public void setA(int a) { 
     this.a = a; 
    } 
} 

public static void main(String[] args) { 

     Map map = new HashMap(); 
     MyMaths mayMaths = new MyMaths(); 
     map.put("obj", mayMaths); 
     map.put("name", "Ankur"); 

     String expression1 = "obj.a = (name == 'Ankur') ? 20 : 25"; 

     Serializable compiled1 = MVEL.compileExpression(expression1); 

     MVEL.executeExpression(compiled1, map); 

     System.out.println(mayMaths.getA()); 

    } 

MyMaths

출력 내가 실제로 클래스의 변수 "a"에 값을 할당하고 - 20

지금 'XYZ'에서 'Ankur'의 값을 변경, 출력이 될 것입니다 25.

관련 문제