【问题标题】:Return domainclass id to controller that is selected by a radiobutton将域类 ID 返回到由单选按钮选择的控制器
【发布时间】:2013-11-27 14:34:26
【问题描述】:

我正在设计一个简单的议程功能,它可以从日期和时间列表中选择合适的选项(来自议程域类的实例。我正在尝试使用参数将选定的 ID 返回给控制器,id 值为派生自 javascript 函数。不幸的是,它不起作用。

我的观点是这样的:

[...]
<g:form name="agendaForm" url="[resource:aanvraagInstance, action:'showAgenda']" >
<table class="table">
<g:each in="${agendaInstanceList}" status="i" var="agendaItem">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}"><td><input type="radio" name="agendaGroup" value="${agendaItem?.id}"/>
<g:formatDate date="${agendaItem?.startDate}"  type="date" style="LONG"/>
from <g:formatDate date="${agendaItem?.startDate}"  type="time" style="SHORT"/>
to <g:formatDate date="${agendaItem?.endDate}"  type="time" style="SHORT"/></td></tr>
</g:each>
</table>
<fieldset class="buttons">
<g:link name="save" class="btn btn-default" params="[agendaID: getGeselectedID()]" action="prikDatum" id="${aanvraagInstance?.id}">Indienen link</g:link>
</fieldset>
</g:form>
    </div>
</div>
</div>
<g:javascript>
    function getGeselectedID(){
    return getCheckedValue(document.forms['agendaForm'].elements['agendaGroup']);
    }

    function getCheckedValue(radioObj) {
    if(!radioObj)
        return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
        if(radioObj.checked)
            return radioObj.value;
        else
            return "";
    for(var i = 0; i < radioLength; i++) {
        if(radioObj[i].checked) {
            return radioObj[i].value;
        }
    }
    return "";
    }
</g:javascript>

我的控制器方法是:

def prikDatum(Aanvraag aanvraagInstance){

    def agenda = Agenda.find("from Agenda as ag where ag.id=${params.agendaID}")
    // rest of the code
    render view:'editContacts' , model: [aanvraagInstance: aanvraagInstance]

} 

如何将选定的日期发送给控制器?

【问题讨论】:

    标签: javascript grails model-view-controller params


    【解决方案1】:

    getGeselectedID() 是一个 JavaScript 函数,因此您无法在 GSP 标签中访问它(JavaScript 在浏览器中执行,而 GSP 标签在服务器端解析)。

    如果您只是想提交带有所选 id 的表单,您已经在这样做了,请参阅&lt;input type="radio" /&gt;

    该值可以通过name 属性获得,在本例中为agendaGroup

    def prikDatum(Aanvraag aanvraagInstance){
      println params.agendaGroup
    }
    

    【讨论】:

    • 谢谢,这行得通,但我必须将链接更改为 actionsubmit,否则,param.agendaGroup 否则控制器不知道议程组参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2021-10-21
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多