我正在设计一个简单的议程功能,可以从日期和时间列表中选择合适的选项(来自Agenda域类的实例。我试图使用参数将所选ID返回给控制器,id-value是源自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]
}
如何将所选日期发送给控制器?
答案 0 :(得分:1)
getGeselectedID()
是一个JavaScript函数,因此您无法在GSP标记中访问它(JavaScript在浏览器中执行,GSP标记在服务器端解析)。
如果您只想提交一个已选择ID的表单,那么您已经这样做了,请参阅<input type="radio" />
。
该值将在name
属性中提供,在本例中为agendaGroup
。
def prikDatum(Aanvraag aanvraagInstance){
println params.agendaGroup
}