在Grails中创建一个简单的Twitter应用程序(第4部分)

来源:互联网 发布:东方财富数据接口破解 编辑:程序博客网 时间:2024/06/12 22:52
在前面的文章中,我们现在能够更新我们的状态。接下来的事情,我们要做的是搜索其他人跟着他们看他们的状态。

我们必须做的第一件事,是安装搜索插件。

打开的grails-app/domain/org/grails/twitter目录下的Person.groovy文件。将下面的代码放在constraints()闭包之前。

完整的代码应该看起来像这样:
Person.groovy


这将在用户和状态之间创建一个一对多的关系。然后定义可被用于搜索的字段或属性。在我们的例子中,我们只搜索realName。下一步,我们将要增加一个搜索表单。打开grails-app/views/status目录下的index.gsp文件。

我们在<body>之后添加这些代码。

这将是我们的搜索表单。刷新页面,你会立即看到变化。

完整的代码应该看起来像这样:
index.gsp


我们现在在浏览器中检查我们的应用程序。可以看到一个名为SearchableController的新控制器。此控制器将处理所有搜索请求。这是由搜索插件创建的。


我们可以看到在我们状态视图中有一个新的文本域,这是一个我们刚才添加的。当我们搜索一个人,例如说“john”(john在记录中已经存在),然后在键盘上回车,我们就会被重定向到搜索结果页面。


然而,我们希望更改结果会更好看一点。通过覆写搜索控制器的视图来实现。
在grails-app/views目录下,我们创建一个新文件夹并命名为“searchable”。这个文件夹里面,我们创建一个新文件,并命名为“index.gsp”。
这是index.gsp文件的内容。
index.gsp


在页面中我们看到一个搜索结果。后面还提供了一个链接,用于跟踪某一个用户。
我们现在在浏览器再次打开应用程序。



正如我们所看到的,搜索结果页面已经更新。


然而,当我们点击链接,出现一个错误404。这背后的原因是,我们没有在StatusController.groovy里面定义链接的方法,用于在此控制器来处理链接事件。


我们这段代码添加在index() 闭包之后。该方法只是根据链接用户的ID找到与之关联的其他用户,然后将用户重定向到index.gsp。
当我们再一次检查和刷新应用程序,可以看到,当我们点击跟随,我们不再遇到错误了。我们是那么重定向到状态索引页之后。虽然我们没有看到它,但我们现在就是john。


让我们打开不同的浏览器用john名字登录。


我们发布一个新的状态信息并看看yancy的时间轴会发生什么。


这是john的时间轴。


这yancy时间轴。当我们刷新页面,yancy在john之后发布了一个新状态,似乎我们仍然没有看到john的状态更新即使我们跟着他。
要解决这个问题,我们需要更新StatusController.groovy里面的currentUserTimeline()方法,我们添加了一个新的判断,用于判断搜索结果。在判断作者的代码之后,我们添加下面一行:

现在,在搜索结果中包括了搜索所有用户的状态。
更新后的文件应该看起来像这样:
StatusController.groovy

这一次,让我们重新启动服务。


现在,我们可以通过yancy看到john的状态了。
在本教程的最后一部分,我们会优化我们的Web应用程序并添加一些额外的功能。

原创粉丝点击