首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Google Sitebricks 构建更好的 Web 应用程序(5)

使用 Google Sitebricks 构建更好的 Web 应用程序(5)

表单提交处理表单是 Web 应用程序中最繁琐的工作之一。正如您所期望的,Sitebricks 也是这里的一个亮点。 显示了餐馆明细页面的控制器。视图代码如下面清单 10 所示。
清单 10. 餐馆明细视图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
  <head>
    <title></title>
  </head>
  <body>
      <h1>${restaurant.name}</h1>
      <h2>Category: ${restaurant.category}</h2>
      <h2>Average Rating: ${restaurant.averageRating}</h2>
      <h2>Reviews</h2>
      
      @ShowIf(noReviews)
      <p>This restaurant has no reviews yet.</p>

      @Repeat(items=restaurant.reviews, var="review")
      <div class="review">${review.author}{review.rating}<br/>${review.text}</div>

      <form method="post">
          <label for="author">Your name:</label>
          <input type="text" id="author" name="author"/>
          <label for="rating">Your rating:</label>
          <select name="rating">
              <option value="0" label="0"/>
              <option value="1" label="1"/>
              <option value="2" label="2"/>
              <option value="3" label="3"/>
              <option value="4" label="4"/>
              <option value="5" label="5"/>
          </select><br/>
          <label for="text">Write your review:</label><br/>
          <textarea id="text" name="text" cols="60" rows="40"/><br/>
          <input type="hidden" name="restaurantId" value="${restaurant.id}"/>
          <input type="submit" value="Submit your review"/>
      </form>
  </body>
</html>




该文件遵循命名约定,因此它的名称为 RestaurantDetails.html。在文件顶部有一个 HTML 代码,用于显示关于餐馆及其所有评论的信息。此处使用了另一个核心 Sitebricks 小部件 @ShowIf。该小部件的参数是一个布尔变量,在该例中称作 noReviews。在  中没有这个变量,但是有一个名为 getNoReviews 的方法。这是依据 JavaBeans 约定,因此在评估 @ShowIf 小部件时会调用该方法。
HTML 模板的一个更有趣的部分是模板底部的表单。该表单使用 post 方法,就像任何更改服务器的表单一样(在本例中是添加评论到数据库)。它提交回表单本身,因此会用到同一个控制器。在  中,您可以看到有一个不同的方法,即 addReview,它由 @Post 进行注释。这是提交表单时会调用的方法。get 中用到同名的值模式。
加入 My developerWorks 中的 Web 开发组在  中与其他开发人员讨论话题、分享资源
还不是 My developerWorks 的成员?

看一下每个表单元素及其名称。这些元素可以与 RestaurantDetails 类的成员变量相匹配。Sitebricks 会自动将表单数据绑定到成员变量,正如对请求参数所做的那样。这大大简化了开发人员的工作。Sitebricks 中的重定向方法 addReview 返回一个字符串。该方法仅返回应该重定向到相对 URL 的字符串。在本例中,URL 是同一个餐馆明细 URL,因此明细页面会重新显示。你可以轻松将其更改为主页 URL 或任何其他想要的 URL。
返回列表