1
回答
jfinal捕捉404和500页面问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

@JFinal 你好,想跟你请教个问题:

我希望jfinal能提供一个开关,能把捕捉到的404和500页面动作关闭,让容器来处理404和500页面。(我们的原因是这样子,因为用了一个叫做装饰器的技术,所有的请求,都会添加一个相同的页面footer,但是404和500页面不要弄,现在假若访问一个不存在的URL:http://ip:port/myproject/action/aaaaa,这样就会被jfinal捕捉到,然后响应我那个404页面,结果就添加那个公共的页面footer了,所以希望能关闭这个jfinal捕捉的动作)500页面也是,如果我弄一个action,里面特意抛出一个异常,这样就会跳转到我指定的500页面,但是这个页面就会被装饰器捕捉到,就会添加一个页面footer,这是我不想要的。

PS:其次jfinal默认有自己的一个404和500页面,希望当我们程序员没有配置的时候,jfinal是转给容器,而不是自己拿着显示一个带有“Powered by JFinal 2.1”的宣传页面。

举报
lilei430381
发帖于2年前 1回/518阅
共有1个答案 最后回答: 2年前
public class JErrorRenderFactory extends FreeMarkerRender implements IErrorRenderFactory {
	
	private int errorCode;
	
	public JErrorRenderFactory() {
		super(null);// FreeMarkerRender view,init view in render() method
	}

	@Override
	public Render getRender(int errorCode, String view) {
		this.errorCode = errorCode;
		return this;
	}

	@Override
	public void render() {
          //do you render 
        }

}

JFinal配置里设置错误处理工厂:


public void configConstant(Constants constants) {
		
		constants.setErrorRenderFactory(new JErrorRenderFactory());
		
	}


over!
--- 共有 4 条评论 ---
JFinal回复 @lilei430381 : 以后多多支持 jfinal 发展啊 2年前 回复
lilei430381回复 @michaely : 谢谢michaely的帮助,同时我也做了一个全局的拦截器,把所有action中没有捕捉到的异常都在该拦截器中保存到日志了,非常感谢波总的及时留意,真心觉得有这么大的后台支持,非常骄傲和感恩。 2年前 回复
JFinal@michaely 你比作者本人还用得好了哈 2年前 回复
JFinal没错,还可通过扩展IErrorRenderFactory来直接接管404、500 error页面,这招更方便彻底,一时忘了这个方案了,感谢分享 ^_^ 2年前 回复
顶部