Spring 游戏 collection 投影
Spring SPEL collection projection
一个关于 SPEL collection 选择的简单问题。
查看第 10.5.17 节 Collection 选择此页
https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == 'Serbian']").getValue(societyContext);
我需要的是来自外部的选择 'Serbian' 而不是固定的硬编码字符串。
只是为了论证考虑,我们可以从 link 的同一页面中将其作为来自同一社会 class 的“selectedNationality” .
修改后 class 选择国籍
public class Society {
private String name;
public static String Advisors = "advisors";
public static String President = "president";
private List<Inventor> members = new ArrayList<Inventor>();
private Map officers = new HashMap();
// new selector field
private String selectedNationality;
......
}
新选择
新选择的 SPEL 看起来像
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == selectedNationality]").getValue(societyContext);
当我们尝试时,错误是“selectedNationality”不是会员的一部分object。
这是否意味着对于 spring 表达式语言中的 collection 选择,我们需要硬编码字符串?如果是,有人知道为什么吗?
了解如何操作。所以方法是使用变量
参见 10.5.11 变量 @ [https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html][1]
设置变量
所以在我们的例子中,我们将设置变量:
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
StandardEvaluationContext context = new StandardEvaluationContext(tesla);
context.setVariable("selectedNationality ", "Serbian");
新选择
新的选择 SPEL 看起来像这样 #selectedNationality
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == #selectedNationality]").getValue(societyContext);
很有魅力!
一个关于 SPEL collection 选择的简单问题。
查看第 10.5.17 节 Collection 选择此页 https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == 'Serbian']").getValue(societyContext);
我需要的是来自外部的选择 'Serbian' 而不是固定的硬编码字符串。
只是为了论证考虑,我们可以从 link 的同一页面中将其作为来自同一社会 class 的“selectedNationality” .
修改后 class 选择国籍
public class Society {
private String name;
public static String Advisors = "advisors";
public static String President = "president";
private List<Inventor> members = new ArrayList<Inventor>();
private Map officers = new HashMap();
// new selector field
private String selectedNationality;
......
}
新选择
新选择的 SPEL 看起来像
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == selectedNationality]").getValue(societyContext);
当我们尝试时,错误是“selectedNationality”不是会员的一部分object。
这是否意味着对于 spring 表达式语言中的 collection 选择,我们需要硬编码字符串?如果是,有人知道为什么吗?
了解如何操作。所以方法是使用变量 参见 10.5.11 变量 @ [https://docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/html/expressions.html][1]
设置变量
所以在我们的例子中,我们将设置变量:
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
StandardEvaluationContext context = new StandardEvaluationContext(tesla);
context.setVariable("selectedNationality ", "Serbian");
新选择
新的选择 SPEL 看起来像这样 #selectedNationality
List<Inventor> list = (List<Inventor>) parser.parseExpression(
"Members.?[Nationality == #selectedNationality]").getValue(societyContext);
很有魅力!