PlayFramework完整实现一个APP(七)
application Controller添加captcha()
public static void captcha() {
Images.Captcha captcha = Images.captcha();
renderBinary(captcha);
}
添加Route
GET /captcha Application.captcha
访问 http://localhost:9000/captcha
验证码图片已经实现了,现在需要做的是验证输入信息与验证码一致
修改captcha()方法
public static void captcha(String id) {
Images.Captcha captcha = Images.captcha();
String code = captcha.getText("#E4EAFD");
Cache.set(id, code, "10mn");
renderBinary(captcha);
}
修改show()方法
public static void show(Long id) {
Post post = Post.findById(id);
String randomID = Codec.UUID();
render(post, randomID);
}
修改show.html页面
在Comment下方添加验证码图片,和验证控件
<p>
<label for="content">Your message: </label>
<textarea name="content" id="content">${params.content}</textarea>
</p>
<p>
<label for="code">Please type the code below: </label>
<img src="@{Application.catcha(randomId)}">
<br />
<input type="text" name="code" id="code" size="18" value="" />
<input type="hidden" name="randomId" value="${randomId}" />
</p>
<p>
<input type="submit" value="Submit your comment" />
</p>
2.验证
修改postComment 方法
public static void postComment(
Long postId,
@Required(message="Author is required") String author,
@Required(message="A message is required") String content,
@Required(message="Please type the code") String code,
String randomId) {
Post post = Post.findById(postId);
validation.equals(code, Cache.get(randomId)).message("Invalid code. Please type it again");
if(validation.hasErrors()) {
render("Application/show.html", post);
}
post.addComment(author, content); Flash.success("Thanks for posting %s", author);
Cache.delete(randomId);
show(postId);
}
修改show.html页面
#{ifErrors}
<p class="error">
${errors[0]}
</p>
#{/ifErrors}
以上就是PlayFramework完整实现一个APP(七)的内容,更多相关内容请关注PHP中文网(www.php.cn)!
下一篇: 使用观察者模式处理异常信息,观察者模式
推荐阅读
-
Android 启动另一个App/apk中的Activity实现代码
-
python实现对一个完整url进行分割的方法
-
Java实现一个顺序表的完整代码
-
实现一个完整的Node.js RESTful API的示例
-
入门级带你实现一个安卓智能家居APP
-
利用Python函数实现一个万历表完整示例
-
iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)
-
从一个点子到一个社区APP,是如何通过.NET实现的?——“文林物业系统”APP介绍及采访记录
-
Android 启动另一个App/apk中的Activity实现代码
-
[Android App]IFCTT,即:If Copy Then That,一个基于IFTTT的"This"实现