Grails:使用禁用属性设置为true的grails选择标记忽略该值

时间:2015-11-16 05:27:20

标签: grails drop-down-menu

我需要根据其值禁用grails中的select元素。问题是,当我开始添加disable属性时,代码出了问题。

一个例子是当表单发送到后端时,就好像该select元素没有值,并且发送的值为null。但是,当我检查DOM时,元素中有一个selected属性。我试图删除那个禁用的属性,因为我觉得它与我遇到的错误有关,我是对的,因为删除后,一切都正常工作。

这是选择标记

<g:select name="detail-entryNameId"
value="${journalEntryName.savingId}"
from="${journalEntryNameInstanceList}"
optionKey="savingId"
optionValue="displayName"
readonly="${journalEntryInstance.paymentMade}"
/>

关于这个元素的另一件事是它可以尽可能多地出现,这意味着我有一个表,并且在每一行中,该元素都存在,所以我不能简单地操纵它。

我还在这篇文章how can i make a textfield read only in grails?中读到&#34; 如果您使用disabled =&#34; true&#34;该值实际上不会在表单中提交,因此应使用<g:field/>标记。&#34;这证明了disable属性会影响元素的值。

如何禁用select元素,同时仍能正确获取其值?

1 个答案:

答案 0 :(得分:0)

问题是在HTML中仅存在禁用属性会禁用标记。忽略属性的值(true / false)。

在这种情况下,解决方案是根据条件使用<g:if>创建带或不带已禁用属性的标记。

在您的情况下,由于即使禁用了代码也需要该值,您可以添加<g:hiddenField>具有相同名称和值的已禁用选择