百里香叶子下拉列表没有预先选择

时间:2016-04-17 22:22:45

标签: thymeleaf

我的Thymeleaf页面中有几个下拉列表,如下所示:

 <select name="institution.serviceDept" th:field="*{serviceDept}">
      <option th:each="choice : ${serviceDeptList}"
              th:value="${choice.serviceDeptId}"
              th:attr="choiceinstitutionId=${choice.serviceDeptId}, institutioninstitutionId=*{serviceDept.serviceDeptId}, 
              showselected=(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})"
             th:selected="(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})"
             th:readonly="(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})"
             th:text="${choice.name}"></option>
   </select>

当我查看页面时,列表中的第一个值显示为选中状态,实际上即使未手动选择也会作为选定值提交。除非已经选择,否则我宁愿默认选择任何内容。我删除了&#34;个:选择&#34;这并没有任何区别。

任何人都可以告诉我如何选择任何内容或者可能是默认值,例如&#34;请选择&#34; ?

3 个答案:

答案 0 :(得分:1)

在这里发布我的答案,因为其他人没有为我工作(但你的里程我的变化)。显然,您无法在列表中使用null或虚拟对象,或者抛出所有类型的异常。您可以做的是添加另一个空白<option></option>,如下所示:

<select name="institution.serviceDept" th:field="*{serviceDept}">
     <option th:value="0" text="Please Select"></option>
      <option th:each="choice : ${serviceDeptList}" 
              th:value="${choice.serviceDeptId}" 
              th:attr="choiceinstitutionId=${choice.serviceDeptId}, institutioninstitutionId=*{serviceDept.serviceDeptId}, 
              showselected=(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})" 
             th:selected="(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})" 
             th:readonly="(${choice.serviceDeptId} == *{serviceDept.serviceDeptId})" 
             th:text="${choice.name}"></option>
   </select>

请注意虚拟选项标记上缺少thth:value

答案 1 :(得分:0)

尝试添加一个空的选定选项,如下所示:

<option disabled="disabled" selected value=" "> -- select an option -- </option>

已停用,因此一旦您选择其他选项,您将无法再将其选中。

答案 2 :(得分:0)

这对我有用:

    <option label="-- No Value Selected --" value=""></option>