NutzCN Logo
问答 nutz 重定向问题,求解答
发布于 2506天前 作者 qq_cdeebfe2 3343 次浏览 复制 上一个帖子 下一个帖子
标签:

// 重定向
@Ok(">>:/user/login.action")
nutz可以重定向到action吗?

38 回复

action?入口方法?它总有url

对,就是url : /user/login

可以重定向到action吗?还是只能重定向到view?

只能重定向到url

@IocBean
@At("/screen/price")
public class ScreenController {

@At("/priceLook")
public View priceLook(){
    return new VelocityLayoutView("screen/price.html");
}

}
可以用下面的方法直接重定向到上面的方法吗?
@At("/getPrice")
@Ok(">>:/screen/price/priceLook")
public String getPrice(HttpServletRequest request,HttpServletResponse response) {
return "ok";
}

你都写出来,自己试啊

什么都没有报,就是重定向不过去

浏览器的URL变了没?

没有变,用redirect:/priceLook 也一样跳不过去,跟nutz用的版本有关系吗?

先debug一下这个getPrice方法吧, 我觉得根本没走这个方法

debug看过了,getPrice方法走了,返回值以后重定向没有起作用~

难道你走的是ajax?


org.nutz
nutz
1.b.48
是不是用的nutz版本太老了

不是ajax 就跳转一个url到controller方法体

跟版本没啥关系.

你确定没走ajax? 开Chrome的开发者工具的networks,看看服务器返回啥

getPrice()是通过httpClient调用的 ,应该没有关系吧?

上调用httpClient的代码

public int callPrice(){
HttpClientPostMethod client = new HttpClientPostMethod();
List parameters = new ArrayList<>();
int result=client.post(price parameters);
client.destory();
return result;
}

就返回个int???? 没有header, body的??

这里需要怎么处理吗?

... 那你怎么知道ok与否???

HttpClientPostMethod 是你们自己封装的类??? apache http client里面没这个类

HttpClientPostMethod 没自动处理302跳转??

对 自己封装了一下

下面是httpclient 的response的内容: Location的url 就是要重定向的url
HTTP/1.1 302 Found [Server: Apache-Coyote/1.1, X-Powered-By: nutz/1.r.57.r3 <nutzam.com>, Location: /cms/screen/price/priceLook, Content-Length: 0, Date: Tue, 13 Jun 2017 07:57:57 GMT] org.apache.http.conn.BasicManagedEntity@6e525f92

所以nutz没毛病,你的HttpClientPostMethod的问题.

如果你不需要302,只是打算内部重定向的话, 用forward嘛

内部重定向也不进不了action

你还是写个html来测试吧

@wendal 刚刚看了你上面的回复,如果是ajax访问的话是不能用重定向的吗,因为我是ajax访问的,然后一直无法重定向到登录界面

ajax有error和fail回调

@wendal 我想要不管是ajax访问还是url访问,我只要判断到它没有权限,然后就直接重定向到登录界面,能给个解决方案吗

@wendal 直接重写去掉ajax的判断不管用

protected void whenUnauthenticated(ActionContext ac, UnauthenticatedException e) throws Exception {
		if (NutShiro.isAjax(ac.getRequest())) {
			ac.getResponse().addHeader("loginStatus", "accessDenied");
			NutShiro.rendAjaxResp(ac.getRequest(), ac.getResponse(), ajaxFail("user.require.login", "user.require.login"));
		} else {
			new ServerRedirectView(loginUri()).render(ac.getRequest(), ac.getResponse(), null);
		}
	}

要页面端配合的,ajax不
不会执行重定向,需要js判断一下返回值,然后js去重定向

添加回复
请先登陆
回到顶部