0

我真的有两个问题。首先,我想知道当您点击控制器时,标签如何与其中的其他标签交互。具体来说,我有一个标签外部,另一个标签内部。表单标签外部的 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

一旦断点被​​命中,我检查参数,并看到happyTextField 在参数中,但selectto 不在。

提前感谢您的帮助。

4

2 回答 2

1

查看源代码,或使用 firefox 查看实际创建的 HTML 类型。确保您的标签之外没有嵌套标签或输入。您还可以使用插件 Httpfox 来准确查看浏览器向服务器发送的内容。

于 2012-10-16T17:47:11.497 回答
0

您必须考虑宏之类的标签——它们简化了输出 HTML 的过程,但是一旦页面通过浏览器进行了往返,它们就不会直接影响控制器中发生的事情。因此,您需要查看浏览器中的 HTML 源代码以了解发生了什么。在这一点上(对于浏览器而言)HTML 是手写的、由 Grails、Java 还是 PHP 生成的,这没有区别,它只是 HTML。

在控制器端,它所看到的只是标准的 HTTP 请求。所以你需要查看浏览器发送的请求参数。

因此,对于您的第二个问题,请查看浏览器中的 HTML 源代码,了解它为什么不发送selectto参数。也许您在点击提交之前没有选择<option>表单中的一个/一些 s,因为只有选项值selected="selected"由浏览器发送?

于 2012-10-16T05:21:50.627 回答