2014-11-22 62 views
1

我正在使用grails 2.1.1我有一个域名,我想要保存成员的宗教信仰。我保存它没有问题。但是当我去编辑页面时,它并没有检查原始值。假设我为佛教徒保存一个宗教信仰,并且在编辑时我想检查它的价值。但它正在检查穆斯林。我希望在编辑页面上检查该字段。任何人都可以请帮我这个请?? ??这里是我的下面::尝试如何在grails中设置单选按钮编辑

我的领域类>>>

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> 

回答

3

您可能需要考虑手动内的Grails的radioGroup标签,而不是创作您的单选按钮。

但是,如果您决定继续手动创作单选按钮,则需要考虑选择当前值。例如:

<g:radio name="religion" value="muslim" checked="${radioButtonInstance?.religion.equals('muslim')}"/> 

在上面的例子中,你会发现,checked属性被设定为布尔值(根据documentation这是正确的)。

+0

再次感谢你对我的帮助。我想现在使用radioGroup,但唯一的问题是,当我想编辑一个宗教时,它会选择默认的(1号收音机),而不是我用特定宗教保存的值。是否有任何选项可以用收音机组来做 - 或者 - 如果我只使用g:收音机,当我想要创建一个新的时候,它没有检查默认值,但是它在编辑时检查了保存的值。我希望你明白。 – 2014-11-23 04:48:55

3

我认为radioGroup对于您来说是一个更好的解决方案,因为您使用的是grails。

他们的主要问题是您没有将当前设置的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>