在扩展LiftScreen的屏幕类中,我定义了一个文本字段:
class MyScreen extends LiftScreen {
val stuffName = text("Stuff Name", "", trim, valMinLen(2, "2 chars at least"),
"class" -> "input-xlarge")
}
它生成html如下:
<input style="float:left; margin-right: 10px" id="F666221395073GHLIXL" value=""
class="input-xlarge" type="text" name="F666221395059FXOCFK">
您可以看到id
和name
属性,具有不同的生成值。用于两个属性值的是什么?为什么他们不同?我以为它们应该是一样的。
更新
Lift将使用这些生成的值来匹配它在服务器端存储的函数并运行它。
对于单个输入,一个唯一值就足够了,可能是id
,也许是name
,但为什么有两个不同的值?
如果其中一个没用,则根本不需要升降机。
答案 0 :(得分:0)
在HTML表单中,id
和name
不适用于相同的内容。 XML要求每个id
都是唯一的。 name
不是这种情况。请考虑以下形式:
<form ...>
<input type="radio" value="1" name="option" id="option1" />
<label for="option1">Option 1</label>
<input type="radio" value="2" name="option" id="option2" />
<label for="option1">Option 2</label>
<input type="radio" value="3" name="option" id="option3" />
<label for="option1">Option 3</label>
</form>
三个name
标记中的input
必须相同才能实现所需的选择行为(三个中的一个)。但是,id
字段必须是唯一的(根据规范和label
标记)。
Lift显然旨在生成可支持此类用例的HTML,因此在这种情况下必须单独生成id
和name
。你看到的可能只是泛化的结果(毕竟没有要求 name
和id
相等)。