本文通过快速实现“Hello World”应用程序,你也可以从 the Play! example 上运行 “Hello World” 应用程序。

我们从之前创建的 myapp 项目开始,编辑 app/views/App/Index.html模板, 添加下面的表单:

<form action="/App/Hello" method="GET">
    <input type="text" name="myName" /><br/>
    <input type="submit" value="Say hello!" />
</form>

刷新页面,看看我们的改动变化没。

The Say Hello form

让我们尝试提交该表单看看变化。

Route not found

提示出错了,没有找到控制器方法Hello. 让我们为App控制器添加Hello方法 app/controllers/app.go:

func (c App) Hello(myName string) revel.Result {
	return c.Render(myName)
}

下一步, 我们创建一个视图(模板文件). 创建一个 app/views/App/Hello.html文件, 内容如下:

{{set . "title" "Home"}}
{{template "header.html" .}}

<h1>Hello {{.myName}}</h1>
<a href="/">Back to form</a>

{{template "footer.html" .}}

刷新页面,你会看到一个问候:

Hello Robfig

最后,让我们添加一些验证。该名称应要求至少有三个字符。

我们需要使用 验证模块. 编辑 App 控制器的 Hello 方法 app/controllers/app.go:

func (c App) Hello(myName string) revel.Result {
	c.Validation.Required(myName).Message("Your name is required!")
	c.Validation.MinSize(myName, 3).Message("Your name is not long enough!")

	if c.Validation.HasErrors() {
		c.Validation.Keep()
		c.FlashParams()
		return c.Redirect(App.Index)
	}

	return c.Render(myName)
}

现在可以保存用户名并返回到 Index页面了,如果没有输入有效的名称,那么名字和验证错误都保存在 Flash, 这是一个临时的cookie。 flash.html 模板会显示错误或提示信息。

{{if .flash.success}}
<div class="alert alert-success">
	{{.flash.success}}
</div>
{{end}}

{{if or .errors .flash.error}}
<div class="alert alert-error">
	{{if .flash.error}}
		{{.flash.error}}
	{{end}}
	{{if .errors}}
	<ul style="margin-top:10px;">
		{{range .errors}}
			<li>{{.}}</li>
		{{end}}
	</ul>
	{{end}}
</div>
{{end}}

当验证未通过时,我们希望用户可以重新提交之前对其进行编辑。修改您模板app/views/App/Index.html template:

<form action="/App/Hello" method="GET">
	
		<input type="text" name="" value=""/><br/>
	
	<input type="submit" value="Say hello!" />
</form>

现在,当我们提交一个字母作为我们的名字:

Example error

成功,我们得到了一个错误提示。输入的内容被带回编辑。