使用 Google Sitebricks 构建更好的 Web 应用程序
2010-06-14 00:00:00 来源:WEB开发网再次注意一下 @At 注释。这次它的值是 "/restaurant/:name"。:name 用于告诉 Sitebricks 这是个动态变量。它将 URL 与该模式匹配,并将 URL 的最后部分放到一个名为 name 的变量中。这是 Guice 中的常用变量。
get 方法有一个输入参数,由 @Named("name") 注释。调用 get 方法(收到 GET 请求时会调用该方法,因为它含有 @Get 注释)时,这会使 Guice 将从 URL 提取的值注入到该变量中。
示例对变量执行 URL 解码,因为它作为 URL 的一部分引入,而非作为一个 HTTP 请求参数(已执行解码)。如果没有它,Elephant Bar 会以 Elephant%20Bar 的形式引入。您可能会注意到,该类也包含一个有 @Post 注释的 addReview 方法。
表单提交
处理表单是 Web 应用程序中最繁琐的工作之一。正如您所期望的,Sitebricks 也是这里的一个亮点。清单 9 显示了餐馆明细页面的控制器。视图代码如下面清单 10 所示。
清单 10. 餐馆明细视图
<!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>
Tags:使用 Google Sitebricks
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接