我正在学习使用Grails,在处理简单表单提交时遇到了一些我不理解的情况。
我创建了一个名为'add'的控制器(有一个AddController.groovy源文件和一个合适的add / index.gsp视图),并定义了一个非常稀疏的'进程'动作,该动作当前呈现少量HTML验证是否正在调用该操作。
添加控制器上的流程操作的URL(不出所料)http://localhost:8080/frontend/add/process/。
我想向流程操作提交一个非常简单的表单,作为与现有Java库集成的第一步。
向http://localhost:8080/frontend/add/process/发送GET请求会导致调用流程操作,浏览器会显示相关的简单HTML内容。
向http://localhost:8080/frontend/add/process/发送POST请求会返回HTTP 404错误。
我感谢我错过了我的应用程序的一些基本补充,以便上述操作适用于GET和POST请求。我默认假设请求类型无关紧要。
如果我可以向相应的操作发送POST请求,并且只是为了证明事情正在发挥作用而进行了一些标记,我会非常高兴。
我错过了哪些基本要素?
控制器/前端/ AddController.groovy:
package frontend
class AddController {
def index = { }
def process = {
render "<h1>process action being performed</h1>"
}
}
视图/添加/ index.gsp中
<html>
<head>
<title>Test View for index action</title>
<meta name="layout" content="main" />
</head>
<body>
<g:form controller="add" action="process">
<label for="title">Title:</label>
<g:textField name="title" id="title" />
<label for="content">Content:</label>
<g:textArea name="content" id="content" />
<g:actionSubmit value="Add" />
</g:form>
</body>
</html>
答案 0 :(得分:14)
<g:actionSubmit />
指令需要action
属性来指示要处理的操作。我认为表格行动已经足够了。
我需要改变:
<g:actionSubmit value="Add" />
为:
<g:actionSubmit value="Add" action="process" />