@JFinal 你好,想跟你请教个问题:
我们公司现在用Jfinal开发项目,今天我遇到了一个问题,不知道是不是该系统的bug,下面是我的问题描述!
我们使用highcharts插件进行报表显示,但是由于我们的项目是在断网的情况下进行运行的,所以,我修改了highcharts的报表导出图片/pdf...的url,以便满足需求,我创建了一个名为images的Controller,然后将处理的程序代码写在了index方法中,问题出现了,如果我这么写url:http://localhost:8080/water/Images
表单中的参数死活传递不进去,firebug调试:
http状态码为302,并且它又重新以get方式进行了请求!
但是,如果我这么写url:http://localhost:8080/water/Images/index
就可以传递进去。这是个很隐蔽的问题,我弄了很长时间。
我记得Controller默认调用的index方法啊!为什么会这样????
JFinal
这个问题是tomcat自做主张导致的,tomcat有个极坏的毛病,假如WebRoot 下面存在一个目录叫 "abc" 那么你如果请求 localhost/abc 则 tomcat 会给你自做主张做 302 重定向到 localhost/abc/,即自动加上 "/" 字符到末尾。而你用 /abc/index 访问时,实际上是用后面的 index 是当成了 urlPara。
所以解决的办法很简单,建议在WebRoot下建一个view子目录,将所有 .html 都存放在这个子目录下面,而非直接存放在WebRoot下。另外 js、css、jpg 这些文件不用动,还是直接放 WebRoot下,不必移入view 下
如果想快速解决问题,可以将controllerKey 的名字改一下,例如改成 image,去掉 s
引用来自“JFinal”的答案
这个问题是tomcat自做主张导致的,tomcat有个极坏的毛病,假如WebRoot 下面存在一个目录叫 "abc" 那么你如果请求 localhost/abc 则 tomcat 会给你自做主张做 302 重定向到 localhost/abc/,即自动加上 "/" 字符到末尾。而你用 /abc/index 访问时,实际上是用后面的 index 是当成了 urlPara。所以解决的办法很简单,建议在WebRoot下建一个view子目录,将所有 .html 都存放在这个子目录下面,而非直接存放在WebRoot下。另外 js、css、jpg 这些文件不用动,还是直接放 WebRoot下,不必移入view 下
如果想快速解决问题,可以将controllerKey 的名字改一下,例如改成 image,去掉 s