使用Grails中的下拉列表中的设置变量

使用Grails中的下拉列表中的设置变量,grails,Grails,在Grails gsp中, i当用户从下拉列表中进行选择时,以另一种方式当用户从中选择值时,分配变量的内容: <g:select name="patient.id" from="${patients}" optionKey="id" > 我想将患者id设置为下面的pid变量: <g:set var="pid" scope="request"> 我成功的唯一途径是: <g:set var="pid" value="${2}" scope="request">

在Grails gsp中, i当用户从下拉列表中进行选择时,以另一种方式当用户从中选择值时,分配变量的内容:

<g:select name="patient.id" from="${patients}" optionKey="id" > 
我想将患者id设置为下面的pid变量:

<g:set var="pid" scope="request">
我成功的唯一途径是:

<g:set var="pid" value="${2}" scope="request">
但这不是动态的方式

我怎样才能做到这一点

谢谢 Sherif

g:set实际上不是一个html字段,您正试图从html/js代码中分配一个java对象

您不能从客户端脚本为任何Java对象分配js变量。如果您需要解决方法来实现这一点,那么您最多可以执行以下操作:

$('#your_select').on('change',function(){
if($('this').val()=="bingo"){
var X="${pid="bingo"}" //if will assign pid a string "bingo" and X(a js var) value "bingo"
}
}
请看${}之间的代码是服务器端代码,您不能将任何客户端代码写入其中,因此基本上您不能只执行类似${pid=$this.val}的操作。
如果你想知道为什么我们不能这样做,是因为没有必要这样做,而且正如伊戈尔·阿塔莫诺夫的评论所描述的那样,这也没有意义

如我在另一个答案中所述,您不需要一些变通方法,那么针对此类需求的最佳解决方案是:

在某个js变量中获取select的值。 对服务器操作进行AJAX调用,该操作将根据请求参数发送数据,因此在本例中,一个参数将显示您选择的值。 接收AJAX响应并根据响应设置html元素。 例如:

var selected = $('#your_select_id).val();
jQuery.ajax({
                    type: 'POST',
                    url: 'your action url that will render response',
                    data: "selected="+selected,
                    async: false,
                    success: function(response,textStatus){
                        json= JSON.parse(response);
                        $('#some_textBox).val(json.somevalue);
                     },
                    error:function(XMLHttpRequest,textStatus,errorThrown){}
                });

GSP是服务器端代码,在HTML发送到浏览器之前执行。之后不能使用变量。你想达到什么目的?我的问题有什么回答吗?@SShehab如果你解释一下在分配“pid”后你想做什么,我们可能会帮上更多的忙,因为这是一件非常糟糕的事情。如果只想在客户端进行更改,则应使用客户端变量。好的,当用户从下拉列表中选择患者时,情况是这样的,我必须了解该患者;s ID,然后到DB获取与他相关的处方,正如我之前所说的,我需要患者ID,以便选择能够获取处方这就是为什么我要将其放入变量中,如果你有其他方法来实现这个场景,我会grateful@SShehab如果您不能理解这一点,那么您可能需要首先了解web开发的基础知识。