【问题标题】:Passing a java list to an html template将 java 列表传递给 html 模板
【发布时间】:2012-06-12 14:28:08
【问题描述】:

我有一个 html 文件的打印导出,它从地图中导入,如下所示

Template t = TemplateLoader.load("Printing/acount.html");
Map<String, Object> map = new HashMap<String, Object>();
map.put("accountName ", e.accountName);
map.put("accountAmount ", acAmount);
    return t.render(map);

并将参数加载到 html 文件中

<div>
     Account: <font size="3"><b>${ accountName }</b> ${accountAmount}</font> <br/>

它的出口看起来像

账户 15884 5.000

如果我想在导出中包含多条记录怎么办?

让我们说

账户 15885 2.000

账户 15886 4.000

账户 15887 3.000

第二种情况下的html和java代码应该如何传递未知数量的记录?

【问题讨论】:

  • 也许您应该告诉我们您正在使用哪个模板引擎/API。
  • 对不起,我正在使用游戏框架

标签: java html playframework


【解决方案1】:

如果你有列表,你可以做

map.put("accounts", theAccountList);

在模板(我假设是 FreeMarker)中,您可以:

<#list accounts as account>
 <div>Account: <font size="3"><b>${account.getName()}</b> ${account.getAmount()}</font> <br/></div>
</#list>  

【讨论】:

    【解决方案2】:

    您现在正在创建一个Map,其值为accountNameaccountAmount。您应该做的是添加一个对象列表,每个对象都包含 accountNameaccountAmount 的值。

    看起来像这样:

    Map<String, Object> map = new HashMap<String, Object>();
    List<Account> accounts = new ArrayList<Account>();
    map.put("accounts", accounts);
    return t.render(map);
    

    然后,您可以在模板中遍历 ${ accounts } 中的项目(例如,对于 accounts 中的每个 account)并打印 account.nameaccount.amount 的每个值。

    我不熟悉这些模板的确切语法,但方法应该遵循这些原则。

    【讨论】:

      【解决方案3】:

      使用列表和 for 循环。查找 JSP 或 JSTL for loop。

      【讨论】:

      • OP 说的是playframework,没有使用JSP 和JSTL。
      猜你喜欢
      • 2012-09-27
      • 2021-07-26
      • 1970-01-01
      • 2011-08-17
      • 2014-08-14
      • 2013-02-14
      • 2012-11-01
      • 2017-12-29
      相关资源
      最近更新 更多