grails - 简单的 Hello World Grails 表单提交

标签 grails web

我是 Grails 的新手,我正在尝试使用一个非常简单的示例。我应该提交一个表单并在屏幕上显示“Hello World”。它由以下 Controller 组成:

package surface

class SearchController {

 def index() {
    render(view: "search")
 }

 def result() {
    render "Hello World"
 }
}

和一个 View ,其形式为:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<g:form name="searchform" url="result">
<g:textArea cols="80" rows="30" name="searchfield"/>
<g:actionSubmit value="Ask"/>
</g:form>
</body>
</html>

当我单击“询问”时,我收到 404 错误,但浏览器正确访问“/surface/search/result”。当我不使用表单直接输入该地址时,“Hello World”会正确显示。这可能是显而易见的,但我似乎无法从文档中找出为什么这不起作用。

最佳答案

作为@Tom Metz 答案的补充,您在 Grails Controller 结构中需要记住的是,每个公共(public)方法都被视为 action。 .此操作映射到一个 url。在您的示例中将存在 /search/index/search/result ( Controller + Action )。
g.form 的文档是正确的,因为这是说的;

url (optional) - A map containing the action,controller,id etc.



因此,要更正您的 View ,您可以将操作设置为已注释,或者您可以调整使用 url 的方式:
<g:form name="myForm" url="[action:'result',controller:'search']">

关于grails - 简单的 Hello World Grails 表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13661695/

相关文章:

unit-testing - Grails电子邮件插件单元测试

javascript - JQuery:第一个 tr 小于 X td

grails - 如何终止以 "run-app"启动的 Grails 2.3 应用程序?

grails - 在 Grails 3.1.7 中构建一场 slim 的 war

javascript - Grails application.js 未执行

grails - Grails-在运行测试用例时如何调用servlet?

api - REST API 应该选择 ID 还是名称字段?

javascript - 如何使用 javascript 将图像转换为音频?

JavaScript 无法在我机器上的任何浏览器上运行

css - HTML5 网站使用 CSS,背景和标题问题