jfinal 链接带参数访问control,如何地址栏不显示参数信息

由于redirect 是重定向,新的请求会丢失掉 setAttr(...) 传递的值回到页面,但是这样访问的地址栏的url会发生变化,想要这个效果,不直接显示给用户,(需用返回的是页面,非json、或者文本这些)

因为返回的界面需要用到查询的数据显示出来,不知道有没有什么好的方法呢。谢谢!

评论区

JFinal

2017-06-29 11:42

具体问题是?

aqiang

2017-06-29 18:21

@JFinal 可能表达的不清楚,不好意思,就是 url = 'xxxx?id=123456' ,访问的时候链接不显示 ?id=123456 这些参数

JFinal

2017-06-29 19:14

@aqiang 带个 true 参数就可以了:
redirect(url, true)

aqiang

2017-06-29 19:22

@JFinal 但是这样返回页面的话,之前设置的查询的内容用setAttr("xxx"),页面没有办法取值,不知道什么问题,请教了!

JFinal

2017-06-29 20:59

@aqiang setAttr(...) 传递的数据在 redirect(...) 以后会丢失,这个是由 redirect 机制决定的

redirect 机制会让浏览器一共发起两次请求,第一次请求过来以后,服务端响应一个redirect 并告知浏览器该重定向到哪个 url,浏览器收到 url 以后会再次发起一个新的请求

在浏览器发起第二次请求时,setAttr(...) 过来的数据就会丢失掉,所以需要想别的办法解决

Arjen-Ribery

2017-08-22 15:36

波总,我想问下,我在control里写了render(url),然后在render之前我setAttr了两个参数,但是我发现丢失了一个,如果要丢失的话应该全部丢失,为什么只丢了一个。。。

JFinal

2017-08-22 15:38

@Arjen-Ribery 不细心而已,不可能出现丢失的问题

Arjen-Ribery

2017-08-22 17:22

@JFinal 到后来我用redirect(actionUrl?参数=213&参数=524,true),后来把 url整体打印了一下,发现参数是带着的,但是进了页面后&后的参数丢失了。。。。。我实在找不出是哪里的问题

Arjen-Ribery

2017-08-22 17:25

@JFinal 我是在进行save或者update操作后进行的重定向。对数据操作完成后跳转列表页面出现的参数丢失问题。

JFinal

2017-08-22 17:29

@Arjen-Ribery redirect 是告知浏览器再次发起一个全新的请求, setAttr(...) 过来的数据必须要丢掉,这个是浏览器的行为,更深点说这是 http 协议规范

因此,这个是很正确的结果,不必纠结

Arjen-Ribery

2017-08-22 17:31

@JFinal 好吧 谢谢波总

JFinal

2017-08-22 17:36

@Arjen-Ribery 注意一下,这个问题,任何框架,任何语言的框架都是这么处理的,因为这个是由 http 规范决定的,redirect 无法保持表单参数,只能保持 url 上的问号挂参

Arjen-Ribery

2017-08-22 17:54

@JFinal 嗯嗯 记住了 谢谢波总

热门反馈

扫码入社