简单的Hello World Grails表单提交

时间:2012-12-01 17:15:51

标签: grails web

我是Grails的新手,我想尝试一个非常简单的例子。我应该提交一份表格并在屏幕上显示“Hello World”。它由以下控制器组成:

package surface

class SearchController {

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

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

和一个视图,格式为:

<%@ 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”正确显示。这可能是一个明智的选择,但我似乎无法找出为什么这不起作用。

1 个答案:

答案 0 :(得分:4)

补充@Tom Metz的答案,Grails控制器结构中需要记住的是每个公共方法都被认为是action。此操作映射到URL。在您的示例中,将存在/search/index/search/result(控制器+操作)。

g.form的文档是正确的,因为这说明了;

  

url(可选) - 包含action,controller,id等的地图。

因此,要更正您的观点,您可以将操作设置为已注释,或者您可以调整使用网址的方式:

<g:form name="myForm" url="[action:'result',controller:'search']">