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 | @At("/") public class ShowRestaurants { private List<Restaurant> restaurants; private String category; private LinkedHashSet<String> categories; private final RestaurantDao dao; @Inject public ShowRestaurants(RestaurantDao dao){ this.dao = dao; } @Get public void get(){ this.restaurants = dao.findAll(); categories = new LinkedHashSet<String>(restaurants.size()); for (Restaurant restaurant : restaurants){ categories.add(restaurant.getCategory()); } if (category != null && category.trim().length() > 0){ List<Restaurant> filtered = new ArrayList<Restaurant> (restaurants.size()); for (Restaurant restaurant : restaurants){ if (restaurant.getCategory().equalsIgnoreCase(category)){ filtered.add(restaurant); } } restaurants = filtered; } } // getters and setters omitted for brevity } |
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 39 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <title>Reviewr</title> </head> <body> <h1>All Restaurants</h1> <form method="get"> <label for="category">Select category:</label> <select name="category" id="category"> <option value="" label="Any"/> @Repeat(items=categories, var="category") <option>${category}</option> </select> <input type="submit" value="Filter"/> </form> <table border="1"> <thead> <tr> <td>Name</td> <td>Category</td> <td>Average Rating</td> </tr> </thead> <tbody> @Repeat(items=restaurants, var="restaurant") <tr><td><a href="/restaurant/${restaurant.name}">${restaurant.name}</a></td> <td>${restaurant.category}</td><td>${restaurant.averageRating} </td></tr> </tbody> </table> <div class="msg">Not in the list? <a href="/restaurants/new">Add a restaurant!</a> </div> </body> </html> |
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 39 40 41 42 43 44 45 46 | @At("/restaurant/:name") public class RestaurantDetails { private final RestaurantDao dao; private final ReviewDao reviewDao; private final Logger logger; private Restaurant restaurant; private String text; private String author; private Integer rating; private Integer restaurantId; @Inject public RestaurantDetails(RestaurantDao dao, ReviewDao reviewDao, Logger logger){ this.dao = dao; this.reviewDao = reviewDao; this.logger = logger; } @Get public void get(@Named("name") String name){ try { name = URLDecoder.decode(name, "UTF-8"); } catch (UnsupportedEncodingException ex) { logger.log(Level.SEVERE, null, ex); } this.restaurant = dao.findByName(name); reviewDao.getReviewsForRestaurant(restaurant); } @Post public String addReview(@Named("name") String name){ try { name = URLDecoder.decode(name, "UTF-8"); } catch (UnsupportedEncodingException ex) { logger.log(Level.SEVERE, null, ex); } restaurant = dao.findByName(name); reviewDao.create(restaurant, text, author, rating); return "/reviewrWeb/restaurant/"+restaurant.getName(); } public boolean getNoReviews() { return this.restaurant.getReviews().size() == 0; } // getters and setters omitted for brevity } |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |