你可能不得不做出一个辅助功能,据我所知,没有办法Java可以使用表达式处理这个开箱。
${Employee.joinEmployeesByName(Employees, "--")}
代码在Employee
类:
public static String joinEmployeesByName(Employee[] arr, String separator) {
//implement
}
下面是使用动态例如反射:
public static String getFieldByName(Employee obj, String fieldName) {
String ret = null;
Class<?> c = obj.getClass();
try {
Field field = c.getDeclaredField(fieldName);
ret = field.get(obj).toString();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return ret;
}
public static String joinEmployeesByField(Employee[] arr, String fieldName, String separator) {
if(arr.length < 1) {
return "";
}
StringBuilder ret = new StringBuilder();
ret.append(getFieldByName(arr[0], fieldName));
for(int i = 1; i < arr.length; ++i) {
ret.append(separator);
ret.append(getFieldByName(arr[i], fieldName));
}
return ret.toString();
}
用法是:
${Employee.joinEmployeesByField(Employees, "Name", "--")}
${Employee.joinEmployeesByField(Employees, "Designation", "--")}
我想你将需要创建一个方法返回连接字符串。 –