2016-10-03 136 views
0

我有一个我用Thymeleaf创建的选择菜单。我需要菜单没有默认选择。通常这是通过一个禁用的额外选项完成的,而且我也完成了。现在,问题在于我无法获得选定的属性以渲染到生成的HTML中。这似乎破坏IE,然后默认为第一个非禁用选项。这是我的本钱:选择与Thymeleaf禁用的默认选项

<select th:field="*{serviceName}" required="required" > 
     <option th:selected="true" th:disabled="true" th:value="NOT_SELECTED" th:text="'Pick one'"></option> 
     <option th:each="entry : ${form.services}" 
       th:value="${entry.key}" th:text="${entry.value}"> 
     </option> 
    </select> 

,它呈现这样的:

<select required="required" id="serviceTechnicalName" name="serviceTechnicalName"> 
     <option disabled="disabled" value="NOT_SELECTED">Pick one</option> 
     <option value="SERVICE1">Service One</option> 
     <option value="SERVICE2">Service Two</option> 
    </select> 

我在做什么错?我已经摆弄这些不同的选项的不同组合,至少一个小时了,它不应该是这么难...

FWIW,this似乎是一个重复的问题,但答案没有为我做。那里也没有被接受的答案。

回答

0

显然,使用th:field时它不起作用。看看this post。 但是,我不认为你必须使用th:selected,因为服务器中没有处理。 你有tryied类似:

<select th:field="*{serviceName}" required="required" > 
     <option value="" selected="selected">Selecione</option> 
     <option th:each="entry : ${form.services}" 
       th:value="${entry.key}" th:text="${entry.value}"> 
     </option> 
</select> 
+0

谢谢,但我已经试过(和重试)这种方法,它不起作用。不过,我现在正在阅读你链接的文章。 – ZeroOne

0

好了,那forum postKimy82 suggested深跌成一些Java的配置孔,因此该解决方案并没有吸引我。

然后我将我的Spring Boot从1.3.3-RELEASE升级到1.4.0-RELEASE。然后,我花了一段时间尝试将Thymeleaf从版本2升级到version 3,但显然无法获得所有依赖关系,并排除了传递依赖关系。

所以最后我这样做:

<script type="text/javascript"> 
window.addEventListener('load', function() { 
    document.getElementById('serviceTechnicalName').value='NOT_SELECTED'; 
}); 
</script> 

现在,这不是我一直在寻找的答案,但它的工作...