需要了解Grails参数是如何工作的

需要了解Grails参数是如何工作的,grails,params,Grails,Params,我真的有两个问题。首先,我想知道当你点击控制器时,标签是如何与它内部的其他标签交互的。具体来说,我在标签的外部有一个标签,在标签的内部有一个标签。表单标签外部的textField在控制器内部一次在params中,但是表单标签内部的textField不在params中。这是为什么 我的第二个问题是关于使用标记的问题。我试图在点击控制器后访问参数中标记中的值,但它们根本不在那里。我在旁边有一个右键,它最终出现在参数中…但不是 以下是一个.gsp问题的示例: <div id="includedN

我真的有两个问题。首先,我想知道当你点击控制器时,标签是如何与它内部的其他标签交互的。具体来说,我在标签的外部有一个标签,在标签的内部有一个标签。表单标签外部的textField在控制器内部一次在params中,但是表单标签内部的textField不在params中。这是为什么

我的第二个问题是关于使用标记的问题。我试图在点击控制器后访问参数中标记中的值,但它们根本不在那里。我在旁边有一个右键,它最终出现在参数中…但不是

以下是一个.gsp问题的示例:

<div id="includedNodes">
  <g:textField name="happyTextField" value="I. FEEL. HAPPY!" />
  <g:select name="selectto" id="selectTo" multiple="true"
            size="25" from="${['is', 'this', 'working?']}"/>
</div>

这是控制器:

def includedNodes = params.selectTo
def otherIncludedNodes = params.selectto
def textfieldData = params.happyTextField
def hello = "asdf"  // <--- I put a breakpoint here
def includedNodes=params.selectTo
def otherIncludedNodes=params.selectto
def textfieldData=params.happyTextField

def hello=“asdf”//您必须考虑像宏这样的标记-它们简化了输出HTML的过程,但在页面通过浏览器往返之后,对控制器中发生的事情没有直接作用。因此,您需要查看浏览器中的HTML源代码以了解发生了什么。这一点没有任何区别(对浏览器)无论HTML是手工编写的,还是由Grails、Java或PHP生成的,都只是HTML

在控制器端,它看到的只是标准HTTP请求。因此,您需要查看浏览器正在发送的请求参数


因此,对于您的第二个问题,请查看浏览器中的HTML源代码,了解它为什么不发送
selectto
参数。可能在点击提交之前,您没有选择表单中的一个/部分
,因为只有
selected=“selected”)选项值“
通过浏览器发送?

查看源代码,或使用firefox查看实际创建的HTML类型。确保标记外没有嵌套的标记或输入。也可以使用加载项Httpfox精确查看浏览器发送到服务器的内容