NutzCN Logo
问答 nutz用结合前端pjax请求时,怎么判断是否为pjax请求,如果不是则跳转到原始的index URL链接上?
发布于 2191天前 作者 小苍蝇 2180 次浏览 复制 上一个帖子 下一个帖子
标签: nutzwk

我只知道怎么获取头部! 不知道nutz 解析如果不是pjax请求时,我需要重定向到原始的index.html页面链接,怎么搞? 每当我点击了那个pjax链接,发现再按f5刷新时,我回不去index.html页面了

1.首页index.html

pjax请求



$('a[data-pjax]').click(function() {
var url = $(this).attr('url');//获取url
$.pjax({
url : url,
container : '#pjax-container'
});
})




``` 2.pjax请求的table方法,然后返回table.html页面 @At("/table") @Ok("beetl:/test/table.html") public void dataTable(HttpServletRequest req,HttpServletResponse res) { Enumeration<String> headerNames = req.getHeaderNames(); while(headerNames.hasMoreElements()){ log.info(headerNames.nextElement()+","+req.getHeader(headerNames.nextElement())); } }
3.返回的table.html
<div class="col-sm-12">
	<h2>我是返回的table页面片段</h2>
</div>

23 回复

唯有判断header

你教教我步骤,我记一下

pjax请求时会发送一个X-PJAX头,只需要判断是否存在这个header即可

如果不是,怎么重定向到需要的页面链接了,我还要跳转啊

入口方法返回个View对象嘛

不太懂! 我上面的那个请求table的java代码不是写了返回的页面了吗! 还怎么返回啊

一样可以有返回值啊

我试试看哈,大神,有问题再问你

@wenda 大牛我写好了,可以正常重定向了,刷新了! 下面这个判断怎么把它封装成一个自定义注解! 不想每个方法都要这个判断

	@At("/table")
    @Ok("re:beetl:/test/table.html")
    public String dataTable(HttpServletRequest req,HttpServletResponse res) {
		return req.getHeader("X-PJAX")==null?"beetl:/test/index.html":null;
	}

@wendal 我想这样自定义一个Pjax的注解视图,怎么搞啊,求教

    @At("/table")
    @Ok("re:beetl:/test/table.html")
   @Pjax("beetl:/test/index.html")
    public void dataTable(HttpServletRequest req,HttpServletResponse res) {
		
	}

我写好了,控制层不知道怎么写,你看看

public class PjaxView implements View{

	@Override
	public void render(HttpServletRequest req, HttpServletResponse resp, Object obj) throws Throwable {
		obj = req.getHeader("X-PJAX")==null?"beetl:/test/index.html":null;
	}
	
}
public class PjaxViewMaker implements ViewMaker{

	@Override
	public View make(Ioc ioc, String type, String value) {
		if("pjax".equalsIgnoreCase(type)){
            return new PjaxView();
        }
        return null;
	}

}
这是控制层,怎么写呢,这样报错啊

    @At("/table")
    @Ok("beetl:/test/table.html")
    @Ok("pjax:/test/index.html")
    public void dataTable(HttpServletRequest req,HttpServletResponse res) {
		
	}

@Ok只能写一个

那怎么返回到@Ok("pjax:/test/index.html")这个注解啊

做个@Filters是不是更方便一些?

@wendal 过滤器好像不可以! 因为反会的视图是自定义的! 不是死的! 还是只能用自定义视图了! 但是这样写,返回失败了,不知道怎么搞

	@At("/table")
    @Ok("pjax:beetl:${obj == null?'/test/index.html':'/test/table.html'}")
    public void dataTable(HttpServletRequest req,HttpServletResponse res) {
		
	}

感觉解决的方向不对

就是需要在返回视图的Header中检查是不是pjax请求,不是就自定义返回当前的首页地址

怎么会有这种需求?应该不存在的。

pjax请求后,是刷新某一块页面! 但是pjax请求后,我这个时候按f5刷新,地址栏还是当前的pjax请求后的页面,并没有还原返回到首页啊

@qq_d1ad4e17 pjax有个配置项,进js找找,你的需求太怪了……

来自 iPhone 6

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