action 带参与接收 post 数据的教训

jfinal-java8 的 action 带参在接收 post 数据时出现异常java.lang.IllegalStateException: STREAMED

public void call(String action) {
	String postData = HttpKit.readData(getRequest());
}
java.lang.IllegalStateException: STREAMED
	at org.eclipse.jetty.server.Request.getReader(Request.java:849)
	at com.jfinal.kit.HttpKit.readData(HttpKit.java:264)


通过避免使用 action 带参,既能获取 post 数据又能获取 get 数据。

public void call() {
	String postData = HttpKit.readData(getRequest());
	//setAttr("postData", postData);
        getPara("action")
}

!!! 切记先 readData,再 getPara。否则报异常  java.lang.IllegalStateException: STREAMED


评论区

zhangtianxiao

2018-05-22 20:46

多谢分享

JFinal

2018-05-22 22:49

为啥会有这个问题? 看一下源码,期待你的后续分享

JFinal

2018-05-22 22:49

@玛雅牛 大神来看看这个是为啥?

欲风217

2018-05-23 09:04

@JFinal 项目时间紧,还没空看源码。不过,我做了一个实验,不用 action 带参方式,如果先 getPara 再 readData,也会报异常,文中也提到了。

lyh061619

2018-05-23 16:40

这个问题,是否是少配置参数了的呢

欲风217

2018-05-23 18:20

@lyh061619 如果你的意思是少 action 这个参数值,答:不少。

玛雅牛

2018-05-24 21:46

@JFinal 可能得这样取 void call(RawPostData data, String action) ,自动参数绑定支持原生post数据(比如通过post方式传递json,xml数据)

欲风217

2018-05-25 09:15

@玛雅牛 看着很靠谱,我试试

热门反馈

扫码入社