Öme*_* AK 3 caching playframework
我正在尝试实施一个测验应用程序.应用程序一个接一个地用ajax加载问题.当用户点击"转到下一个问题"按钮时,他/她的答案将保存在缓存中.但是当我调试时,缓存列表总是为空...
此代码创建第一个缓存数组:
public static void viewQuiz(@Required String user, @Required String test) {
if(validation.hasErrors()) {
flash.error("Hoop kullan?c? laz?m…");
index();
} else{
TestClass selectedTest = TestClass.find("title", test).first();
List<String> choiceList = new ArrayList<String>();
session.put("testID", selectedTest.id);
Cache.set("choices", choiceList, "30mn");
render();
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码试图逐个保存答案:
public static void question(@Required Long id, String answer){
Long testId = Long.parseLong(session.get("testID"));
TestClass test = TestClass.findById(testId);
List<Question> questList = Question.find("test_id", test.id.intValue()).fetch();
Question quest = questList.get(id.intValue());
if(answer != null){
List<String> choiceList= Cache.get("choices",List.class);
choiceList.add(id.intValue(), answer);
Cache.set("choices", choiceList, "30mn");
}
int count = questList.size()-1;
render(quest, count, id);
}
Run Code Online (Sandbox Code Playgroud)
这段代码是第二个的html视图:
#{extends 'main.html' /}
#{set title:'question.html' /}
<script type="text/javascript">
var questionId = ${id};
$('#nextButton').click(function(){
$('#questionDiv').html('<p><img id = "loaderGif" src="public/images/loading.gif"/></p>');
$('#questionDiv').load("/test/" + ++questionId);
});
$('#endButton').click(function(){
$('#questionDiv').html('<p><img id = "loaderGif" src="public/images/loading.gif"/></p>');
$('#questionDiv').load("/result");
});
</script>
<legend>Soru ${id+1}</legend>
<p>&{quest.question}</p>
#{list items:quest.choices, as:'choice'}
<p><input type="radio" name = "answer" id = "answer" size="30" value="${choice}"/>&{choice}</p>
#{/list}
#{if id < count}
<input id = "nextButton" name="nextButton" type="button" value="?leri"/>
#{/if}
#{else}
<input id = "endButton" name="endButton" type="button" value="Bitti"/>
#{/else}
Run Code Online (Sandbox Code Playgroud)
小智 13
不要使用缓存来"存储"对象.将其存储在会话中或创建新模型以存储答案.通常,您不能指望缓存保留您放入的对象; 它是一个缓存,而不是商店.
引用Play!网站:http://www.playframework.org/documentation/1.2.2/cache
重要的是要理解缓存合同是明确的:当您将数据放入缓存时,您不能指望数据永远保留在那里.事实上你不应该.缓存很快,但值过期,缓存通常只存在于内存中(没有持久备份).
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |