我正在使用grails 2.1.1我有一个域名,我想保存成员的宗教信仰。我保存它没有问题。但是当我去编辑页面然后它没有检查原始值。假设我正在为佛教徒保存一个宗教,在编辑时我想要检查它的价值。但它正在检查穆斯林。我希望在编辑页面上检查字段。有人可以帮我这个吗?? !!!以下是我的尝试::
我的域类>>>
class RadioButton {
String religion
static constraints = {
}
}
我的表单页面>>>
<div class="fieldcontain ${hasErrors(bean: radioButtonInstance, field: 'religion', 'error')} ">
<label for="religion">
<g:message code="radioButton.religion.label" default="Religion"/>
</label>
<g:radio name="religion" value="muslim" checked="checked"/> Muslim <br/>
<g:radio name="religion" value="hindu"/> Hindu<br/>
<g:radio name="religion" value="christian"/> Christian<br/>
<g:radio name="religion" value="buddhist"/> Buddhist
</div>
答案 0 :(得分:3)
您可能需要考虑Grails中的radioGroup标记,而不是手动创作单选按钮。
但是,如果您决定继续手动创作单选按钮,则需要考虑选择当前值。例如:
<g:radio name="religion" value="muslim" checked="${radioButtonInstance?.religion.equals('muslim')}"/>
在上面的例子中,您会注意到checked
属性被设置为布尔值(根据documentation这是正确的。)
答案 1 :(得分:3)
我认为当您使用grails时,radioGroup对您来说是更好的解决方案。
他们的主要问题是您没有将当前设置的religion
传递给GSP。无线电小组没有告知用户已经设置了religion
,而穆斯林已使用checked="checked"
进行了硬编码。
从你的第一行判断如果bean有错误设置了div的类,我假设你可以从radioButtonInstance
访问当前设置的宗教信仰。使用radioGroup
标记将当前设置的值传递为${radioButtonInstance?.religion}
,然后我们设置您需要的值和标签,如下所示:
<g:radioGroup name="religion"
values="['Muslim', 'Hindu', 'Christian', 'Buddhist']"
labels="['Muslim', 'Hindu', 'Christian', 'Buddhist']"
value="${radioButtonInstance?.religion}">
<p>${it.label}: ${it.radio}</p>
</g:radioGroup>
但是,我建议您将可用的宗教设置为枚举类,而不是将其硬编码到GSP上,因为您可能希望重用它。然后,您可以通过控制器将其作为变量传递给模型,调用它,例如religions
,然后您的radioGroup将如下所示:
<g:radioGroup name="religion"
values="${religions}"
labels="${religions}"
value="${radioButtonInstance?.religion}">
<p>${it.label}: ${it.radio}</p>
</g:radioGroup>