【问题标题】:Need to understand how Grails params work需要了解 Grails 参数是如何工作的
【发布时间】:2012-10-16 04:56:08
【问题描述】:

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

提前感谢您的帮助。

【问题讨论】:

    标签: grails params


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        相关资源
        最近更新 更多