3

我阅读了文档http://www.playframework.org/documentation/1.1/tags#ageta但我不明白。

有人可以提供一个更好、更容易理解的例子吗?

4

1 回答 1

3

这本质上是一种避免重复复制和粘贴一堆 HTML 然后更改其中的十几个小细节的方法。

他们在文档中给出的起始示例(我知道您已经阅读过,但为了便于参考,我将在此处引用)是这样的:

<p>
  <label>&{'user.name'}</label>
  <input type="text" id="user_name" name="user.name" value="${user?.name}" class="${errors.forKey('user.name') ? 'has_error' : ''}">
  <span class="error">${errors.forKey('user.name')}</span>
</p>

如果您想从页面上的该标记开始,然后向表单添加第二个字段,则必须复制/粘贴整个块,然后更改&{'user.name'}, user_name, user.name, ${user?.name}, user.name, 和user.name(每个都是对相同基本字段的单独引用) 只是为了让新标记应用于您的新字段。

这只是比我们中的一些人愿意承担的只是向该死的表单添加一个字段更多的输入。

替换#{field 'foo'}允许是这样的:

#{field 'user.name'}
<p>
  <label>&{field.name}</label>
  <input type="text" id="${field.id}" name="${field.name}" value="${field.value}" class="${field.errorClass}">
  <span class="error">${field.error}</span>
</p>
#{/}

这里的优点是它只user.name出现在一个地方。如果您要复制/粘贴标记以添加另一个字段,则只需进行一次替换:#{field ...}标记中的那个。

最终结果是更容易为表单上的许多字段开发标准标记,而无需对标签、名称、ID、当前值、错误消息、类等进行大量容易出错的手动替换。

于 2010-11-12T04:12:55.093 回答