Grails动态无线电组

Grails动态无线电组,grails,radio-group,Grails,Radio Group,我要求grails应用程序在屏幕上显示问题列表,每个问题下面列出6个等级选项。这些问题和分数的信息来自数据库中的查找表。我的问题和成绩显示在屏幕上,但我不知道如何获得查找信息保存在数据库中。我还想知道是否有一种方法可以让每个问题默认选择某个等级。我尝试了checked=“S”,但这只为最下面的问题选择了S分数 我的视图代码是 <label for="questions"></label> <ul class="one-to-many"> &

我要求grails应用程序在屏幕上显示问题列表,每个问题下面列出6个等级选项。这些问题和分数的信息来自数据库中的查找表。我的问题和成绩显示在屏幕上,但我不知道如何获得查找信息保存在数据库中。我还想知道是否有一种方法可以让每个问题默认选择某个等级。我尝试了checked=“S”,但这只为最下面的问题选择了S分数

我的视图代码是

  <label for="questions"></label>
    <ul class="one-to-many">
    <!-- Evaluation Questions -->
    <g:each in="${cdeEvaluationInstance?.questions}" var="evalQuestion" status="i">
    <g:hiddenField name="cdeEvaluation.questions[${i}].id" value="${evalQuestion.id}"/>
    <legend>
    ${evalQuestion.areaOfEval.title}
    </legend>
    <p>
    <strong>Focus areas: ${evalQuestion.areaOfEval.focusArea}</strong>
    </p>
    <p>
    <em> ${evalQuestion.areaOfEval.description}
    </em>
    </p>
    <p>
    <g:each in="${evalQuestion.areaOfEval.grades.sort{it.grade}}"
    var="grade" ><div class="radio">
    <span class="clear long"> 
    <input type="radio"
    name="radioGroup" value="${evalQuestion.grade}" checked="S"  /> 
    <label class="long"><strong> ${grade.grade}
    </strong> ${grade.description}</label>
    </div>
    </g:each>
我的问题和答案所在表的域

package gov.mt.mdt.cde.domain.evaluation

import java.util.Date;

class CdeEvalQuestion extends Base{

    CdeAreaOfEvaluation areaOfEval
    CdeAreaOfEvalCriteria grade

    String comments

    static belongsTo = [cdeEvaluation: CdeEvaluation]




    static mapping = {
        id column: 'cevqu_id_seq'
        id generator: 'sequence', params: [sequence: 'cevqu_id_seq']

        areaOfEval column: 'caoe_id_seq'
        grade column: 'caoec_id_seq'
    }

    static constraints = {
        comments(blank:true, nullable:true, maxSize:2000)

        createdBy(blank: false, nullable:false, maxSize:13)
        dateCreated(blank: false, nullable:false)
        lastUpdatedBy(blank: false, nullable:true, maxSize:13)
        lastUpdated(blank: false, nullable:true)
    }
}

我刚刚开始学习grails/groovy,所以您能给我提供的任何帮助或示例都将非常有用。谢谢

因此,默认情况下,选择一个特定的问题,您可以执行以下操作:

<g:radioGroup name="myGroup" labels="evalQuestion.areaOfEval.grades" values="evalQuestion.areaOfEval.grades*.grade" value="evalQuestion.grade">
    ${it.radio} <label class="long"><strong>${it.label.grade}</strong> ${it.label.description}</label>
</g:radioGroup>
evalQuestion.areaOfEval.grades.find { it.grade == 'S' }
并将其传递给标记的value属性。您可以这样做:

<g:set var="defaultGrade" value="evalQuestion.areaOfEval.grades.find { it.grade == 'S' }"/>

<g:radioGroup name="myGroup" 
              labels="evalQuestion.areaOfEval.grades" 
              values="evalQuestion.areaOfEval.grades*.grade" 
              value="defaultGrade">


我将其切换并工作,但我有两个问题。在值字段中,我将如何默认选择来自evalQuestion.areaOfEval.grades的“S”等级?同样在第一个例子中,你会注意到我在成绩字母周围有一个很强的标记。通过上面的例子,有没有一种方法可以做到这一点。我似乎得到了所有价值或无价值的强烈标签。因为我看不到你的领域模型,我将尝试回答你的问题。我将修改我的问题,因为评论是有限的。这个标签现在很好用。非常感谢。但是,我仍然有默认值的问题。上面列出的代码中的->应该做什么?当我使用上面的语法时,它将在我的报价未关闭时出错。我尝试过很多其他的方法。在没有->的情况下查找选项,但它也不起作用。谢谢你的帮助…我真的很感激!我对它进行了更新,删除了->用于定义闭包参数列表的用法。相反,它使用隐含的it变量,具有单个参数的闭包可以使用该变量。如果您想了解它的含义,您需要仔细阅读groovy闭包。
<g:set var="defaultGrade" value="evalQuestion.areaOfEval.grades.find { it.grade == 'S' }"/>

<g:radioGroup name="myGroup" 
              labels="evalQuestion.areaOfEval.grades" 
              values="evalQuestion.areaOfEval.grades*.grade" 
              value="defaultGrade">