Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java对象传递到闭包模板?_Java_Google Closure Templates - Fatal编程技术网

将Java对象传递到闭包模板?

将Java对象传递到闭包模板?,java,google-closure-templates,Java,Google Closure Templates,据我所知,Google闭包模板不允许将Java对象传递到模板中(与之相比)。所以我真的不能这样做: // Java file class Course { ... public function getName() { return name; } } // Main function public static void main(String args[]) { // Get all courses List<Course> courses = Co

据我所知,Google闭包模板不允许将Java对象传递到模板中(与之相比)。所以我真的不能这样做:

// Java file
class Course {
  ...
  public function getName() {
    return name;
  }
}

// Main function
public static void main(String args[]) {
  // Get all courses
  List<Course> courses = Courses.getAllCourses();
  Map<String, Object> params = new HashMap<String, Object>();
  params.put("courses", courses);

  String out = tofu.newRenderer("template.listCourses").setData(params);
}

// Soy file
/**
 * @param courses List of courses
 */
{template .listCourses}
  Courses List! <br/>

  {foreach $course in $courses}
        New Course: {$course.name}
  {/foreach}
{/template}
//Java文件
班级课程{
...
公共函数getName(){
返回名称;
}
}
//主要功能
公共静态void main(字符串参数[]){
//获得所有课程
列出课程=课程。getAllCourses();
Map params=新的HashMap();
参数put(“课程”,课程);
String out=tofu.newRenderer(“template.listCourses”).setData(params);
}
//大豆锉刀
/**
*@param课程课程列表
*/
{template.listCourses}
课程表
{foreach$courses in$courses} 新课程:{$Course.name} {/foreach} {/template}

我在想,如果我想这样做,我可能必须编写一个自定义函数,使用反射将球场对象转换为地图?我对Java反射没有经验。有这样的功能吗?

在plovr中,我创建了一个实用程序,它接受a并将其转换为a。诚然,只有在您已经在使用的情况下,您才会发现这一点很有用,但这种方法的好处是Gson可能会为您处理getter/setter反射。例如,我相信你应该能够做到:

JsonElement json = (new Gson()).toJsonTree(courses);
SoyData soyData = SoyDataUtil.jsonToSoyData(json); 

Map<String, Object> params = new HashMap<String, Object>();
params.put("courses", soyData);
JsonElement json=(new Gson()).toJsonTree(courses);
soydatasoydata=SoyDataUtil.jsonToSoyData(json);
Map params=新的HashMap();
参数put(“课程”,数据);

诀窍是利用Gson对反射进行处理,将
课程
转换为
JsonElement
。不确定您是否愿意添加这些依赖项(尽管plovr中的代码非常小——您可以直接复制),但这可能是最方便的解决方案。

初始化params.put语句很好,接下来,我如何将此值(soydata)传递给模板。