OGNL を使用したこの単純なプログラムは、[A,B,D] ではなく null 値のリストを返します。試してみましたが#root{#x.get(#this)}
、まだ null のリストが返されます。なんで?ありがとう。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ognl.Ognl;
public class ognlTest {
static public void main(String[] args) throws Exception
{
Map<String, Object> m = new HashMap<String, Object>();
m.put("a", "A");
m.put("b", "B");
m.put("c", "C");
m.put("d", "D");
List<String> k = new ArrayList<>();
k.add("a");
k.add("b");
k.add("d");
Map<String, Object> context = new HashMap<String, Object>();
context.put("x", m);
Object expression = Ognl.parseExpression( "#root.{ #x[#this] }");
Object value = Ognl.getValue( expression, context, k);
System.out.println("value = [" + value + "]");
}
}
アップデート:
を使用し#root.{#z=#this, #x[#z]}
ます。ばかげていますが、うまくいきます。これはバグだと思いますが、Apache OGNL 4 は未解決のままで、OGNL 3.0.6 は ... 維持されているかどうかわかりません。依存関係が間違っているため、ディストリビューションはコンパイルさえしません。