NutzCN Logo
问答 nutz MVC问题
发布于 2822天前 作者 蛋蛋的忧伤 2257 次浏览 复制 上一个帖子 下一个帖子
标签:

我想方法处理完之后携带数据转发到登陆界面,可是为何就是没效果.希望可以指教下

@IocBean
@Ok("fm")
@At("login")
public class LoginController extends BaseController{
	
	@At
	@Ok("forward:/shop/login.html")                            //我希望处理完成之后转发到shop为项目名,下的login.html页面,需要携带response数据
	public Object gologin(HttpServletRequest request){
		Response response = Outs.ok();
		String uri = request.getHeader("referer");
		System.out.println(uri);
		response.add("referer", uri);
//		new ViewWrapper(new ForwardView("/shop/login.html"), response);
		return response;
	}
	

可是他还是按照类注释Ok的fm,跳转到了 shop/login/gologin 导致了404

希望可以指教

18 回复

那到底想跳转到哪里去?

跳转到登陆界面啊,哥

那登录页面的地址是什么?

"可是他还是按照类注释Ok的fm,跳转到了 shop/login/gologin"

但你的@Ok写的是 /shop/login.html 呢, 自相矛盾啊

类Ok(fm),类Ok(fm),类Ok(fm)...我在方法上写了@Ok("forward:/shop/login.html")理论来讲应该会到login.html,但是他按照类注释Ok(fm)到了 /shop/login/gologin界面,这是不对的.我需要到/shop/login.html

你强调那么多"类Ok(fm)"是想表达啥. 另外fm是啥东西.

在印象里,nutz框架为mvc提供的解决方案API中,给一个类加上At(xxx)注解表示是一个处理请求的Action,给此类方法加上At(xxx)注解表示处理请求的方法,如果类加了At(xxx),其类中方法可以不加At(xxx)也视为是处理请求的方法.
同理,给Action类加上Ok(xxx)注解表示请求处理完成后的操作方式,给类加上Ok(xxx)注解后,method中如果没有加Ok(xxx)注解则默认使用类上的Ok(xxx)来作为此方法的处理成功后的操作方式.
我的问题是给类加的Ok("fm")表示页面使用freemark处理,然后我给方法加上了@Ok("forward:/shop/login.html") 表示处理完请求后内部转发到/shop/login.html页面,但是并没有跟我想的那样去login.html页面,而是按照类Ok("fm")的方式到了/shop/login/gologin页面,然后404未找到资源.
请问我的问题您了解了么?

没编译吧? 入口方法上的@Ok是最优先的.

把类上@Ok去掉, 会出现啥?

确定已经重新编译,把class文件都删掉了,把类注解Ok删除,结果竟然依然还是按照OK("fm")的方式跳转!!! 这是不可能的把,但为何真就出现了??

那证明不是这个方法哦

哥,断点已经跟到了啊

我把方法改成了这样,但依然是那个问题....

@At
	@Ok("re")
	public Object gologin(HttpServletRequest request){
		Response response = Outs.ok();
		String uri = request.getHeader("referer");
		System.out.println(uri);
		response.add("referer", uri);
		return new ViewWrapper(new ForwardView("/shop/login.html"), response);
	}

但是变成这个样子就可以跳转到登陆页面,不过response的数据取不到

@At
	@Ok("re")
	public Object gologin(HttpServletRequest request){
		Response response = Outs.ok();
		String uri = request.getHeader("referer");
		System.out.println(uri);
		response.add("referer", uri);
		return "->:/login.html";
	}
	
return new ViewWrapper(new ForwardView("/login.html"), response);

我知道了....原因是因为我路径搞错了,我以为绝对路径要加上项目名,但殊不知 / 就代表项目根目录, /shop代表项目下的shop文件夹,然后我并没有shop文件价,可能nutz框架检测倒没有这个文件就没跳转= =||

@At
	@Ok("forward:/login.html")
	public Object gologin(HttpServletRequest request){
		Response response = Outs.ok();
		String uri = request.getHeader("referer");
		System.out.println(uri);
		response.add("referer", uri);
		return response;
	}

去看@At的语法吧,这个摸索一下就可以了

问题解决了,感谢nutz,感觉wendal,感谢国家,感谢党,感谢CCTV,感谢公司养我....

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