0

在扩展 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">

您可以看到idname属性,具有不同的生成值。这两个属性值是做什么用的?为什么它们不同?我认为他们应该是一样的。


更新

Lift 将使用这些生成的值来匹配它存储在服务器端的函数并运行它。

对于单个输入,一个唯一的值就足够了,也许id,也许name,但是为什么会有两个不同的值呢?

如果其中一个没用,lift 根本不需要生成它。

4

1 回答 1

0

在 HTML 表单中,idname没有用于相同的事情。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生成 HTML。你看到的可能只是泛化的结果(毕竟没有什么要求 name和平等)。id

于 2013-07-12T20:16:36.247 回答