我正在按照官方Java Form Helpers文档编写自己的字段构造函数。我还借鉴了computer-database
Play 中包含的示例应用程序。
示例应用程序中包含的输入控件模板computer-database
如下所示:
<div class="clearfix @if(elements.hasErrors) {error}">
<label for="@elements.id">@elements.label</label>
<div class="input">
@elements.input
<span class="help-inline">@elements.infos.mkString(", ")</span>
</div>
</div>
从这个例子中,很明显如何在元素周围添加额外的<input>
元素。我的问题是我想改变<input ...>
元素本身的一部分。
我看不到如何执行此操作,因为@elements.input
呈现了完整的<input type="..." value="..." ...>
HTML 元素,因此我没有机会向input
元素添加其他属性。
我想要做的是添加placeholder="my placeholder text"
. 我想从中获取占位符文本elements.args
。
我已经能够通过对 进行字符串操作来实现我想要的@elements.input.buffer
,如下所示:
@(elements: helper.FieldElements)
@{
val buffer = elements.input.buffer;
val index = buffer.lastIndexOf(">"); // find the closing '>'
buffer.delete(index, buffer.length - 1); // delete it
buffer ++= " placeholder=\"" // insert the placeholder attribute
buffer ++= elements.args('placeholder).toString
buffer ++= "\">" // close the input tag
Html(buffer.toString) // render as HTML
}
我的问题是:有没有更简单的方法?Play 中是否已经内置了用于此功能的功能?或者这是我调整input
领域本身的唯一途径?