如何在grails中设置单选按钮进行编辑

时间:2014-11-22 12:17:53

标签: grails grails-2.0 grails-domain-class

我正在使用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>

2 个答案:

答案 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>