如何使用g:select来创建具有常量列表项的选择框

Ant*_*ony 5 grails groovy

我想使用一个选择框<g:select/>转换为这个HTML:

<select id="myselect" name="myselect">
  <option value="r">RED</option>
  <option value="g">GREEN</option>
  <option value="b">BLUE</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我还希望在页面重新加载时从bean中预先选择该值.

我正在这样做,所以我有一个表,每行有一个单独的选项框.

我目前正在以下html中完成此操作:

<g:each in=${mylist} status="i" var="myInst">
   <select id="status${myInst}" name="status${myInst}" data-id="${myInst.id}">
      <option value="r" <g:if test="${myInst.color == "r"}">selected</g:if>>RED</option>
      <option value="g" <g:if test="${myInst.color == "g"}">selected</g:if>>Green</option>
      <option value="b" <g:if test="${myInst.color == "b"}">selected</g:if>>BLUE</option>
   </select>
</g:each>
Run Code Online (Sandbox Code Playgroud)

这一切工作正常,但我想改变这种丑陋的<select><g:select>

小智 8

<g:select id="myselect" name="myselect" value="${myInst.color}"
          from="${['r': 'RED', 'g': 'GREEN', 'b': 'BLUE']}"
          optionKey="key" optionValue="value" />
Run Code Online (Sandbox Code Playgroud)

  • 但是,如果您打算做这样的事情,我建议使用taglib制作一个"selectColor"标签.试图找到你在GSP中放置所有这些魔法常数的位置是非最佳的.另外,测试taglib更容易. (2认同)