jsp页面是这样:
<a href="/file/download/${file.id}">下载</a>
public void upload() {
// 上传代码
new FileInfo().set("name", getFile().getFileName()).set("url", getFile().getSaveDirectory()).save();
index();
}
public void download(){ // 下载哪里的问题?在页面上点击下载没有任何反应。
FileInfo info = FileInfo.dao.findById(getParaToInt());
File file = new File(info.getStr("url")+info.getStr("name"));
if(file.exists()){
renderFile(file); // 确定执行了这行代码
}
index();
JFinal 的 render系列方法,在调用以后,仅仅先 new 了一个 XxxRender对象并保存在 Controller 内部,当执行 index()方法以后,会再次调用另一个 render方法,本次调用会覆盖掉前面 renderFile 时创建的对象。所以,改成如下代码后肯定正常了:
public void download(){
FileInfo info = FileInfo.dao.findById(getParaToInt());
File file = new File(info.getStr("url")+info.getStr("name"));
if(file.exists()) {
renderFile(file);
return ; // 关键在这里,要有 return; 否则 index()方法会被执行
}
index();
}
JFinal Controller 中的 render 方法在被调用后不会立即返回,需要使用下 return。总结一句就是:在一次请求中如果多次调用了render系列的方法,始终只有最后一次调用有效。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。