jfinal form表单使用post方式提交controller.getPara(name)无法获取数据

Saleson 发布于 2013/04/29 20:47
阅读 9K+
收藏 2
 form 表单通过post提交
<form action="login" method="post">
<input name="user.username" />
<input name="user.password" />
<input type="submit" value="submit">
</form>
controller 接收
@ActionKey("login")
public void login() {
System.out.println(getPara("user"));
System.out.println(getPara("user.username"));
System.out.println(getPara("username"));
System.out.println(getPara("password"));
HttpServletRequest request = this.getRequest();
render("../index.jsp");
}



Console results:-----------------------

JFinal action report -------- 2013-04-29 20:47:41 ------------------------------
Controller  : com.single.controller.LoginController.(LoginController.java:1)
Method      : login
--------------------------------------------------------------------------------
null
null
null


加载中
1
JFinal
JFinal

1:假如请求 url 为  /login

2:假定WebRoot下面有 login子目录

3:tomcat会自作主张,将 /login请求再次做 302 重定向到 /login/, 重定向操作是会丢失 post 请求体的

见这里:http://www.oschina.net/question/941098_93842

PS:用 chrome 看一下是否出现了 302 重定向请求

Saleson
Saleson
真是这个原因, 一口老血喷出来. 非常你 @JFinal 的帮助. 也非常感谢@mn_1127
Saleson
Saleson
应该是这个可能. 真是这样我就郁闷了. 忙活了两天就这个问题.
0
mn_1127
mn_1127
把user前缀去掉就应该获得!
Saleson
Saleson
也不行的. request.getParameterMap().size()==0 而且我在JFinalFilter.doFilter()中测过,也是request.getParameterMap().size()==0 但奇怪的是,如果formg表单的method="get" 就可以获取到参数了. 搞不懂为什么.
0
JFinal
JFinal
JFinal action report 输出中没有Parameter这一项,证明确实没有传递参数到后端,检查一下js是否干预了提交过程,可能是js让提交丢失了表单数据
JFinal
JFinal
回复 @Saleson : 把对js文件的引用也全部删掉,如 <script src="xxx.js" 这类
Saleson
Saleson
完全没写JS. 纯HTML.
0
Saleson
Saleson

也不行的.  request.getParameterMap().size()==0   

而且我在JFinalFilter.doFilter()中测过,也是request.getParameterMap().size()==0 

但奇怪的是,如果formg表单的method="get" 就可以获取到参数了.  

搞不懂为什么.  

程亚飞
程亚飞
同问
0
JFinal
JFinal

用chrom可以很方便地查看post请求中表单数据,以下是jfinal_demo项目请求时的数据截图:

0
Saleson
Saleson

这是提交的表单数据:

这是controller中的代码:

这是控制台输出的结果:

返回顶部
顶部