js中如何写controller的绝对路径?

pandyyan 发布于 2013/08/12 16:01
阅读 3K+
收藏 0

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

我在configHandler中配置了ContextPathHandler:me.add(new ContextPathHandler("BASE_PATH"));

我的jsp中有这样一段js,如下:


function checkPower(optpurview, callbackfunc) {
	$.ajax({
		url : '${BASE_PATH}/user/checkPower',
		type : 'POST',
		async: false, //同步执行
		data : {
			optpurview : optpurview
		},
		dataType : 'JSON',
		success : function(data) {
			if(!data.success) {
				callbackfunc();
			}
		},
		error : function(data) {
			$.messager.alert('提示', '系统异常,请联系管理员!', 'error');
		}
	});
}
问题是这段代码在jsp中是没有问题的,但我想把jsp中的js单独拎出来放到一个js文件中,这时${BASE_PATH} 这个变量就无法识别了,请问怎样在js文件中将action写成绝对路径?谢谢!!


@缪斯的情人@绝望的八皮@alvinte@玛雅牛 多谢各位!!!

加载中
1
ewangshi
ewangshi

在jsp中 "var basepath= '${BASE_PATH}';"

url : basepath + '/user/checkPower',

1
a
alvinte
${}这种表达式是服务端行为,是各种模板处理的,说白了就是程序处理的,js资源的请求如果没有经过这个处理的话,就不会对这样的变量作解释。
0
Jieven
Jieven
在JFinal启动的时候放到全局作用域里面去,然后通过JS从作用域取
JFinal.me().getServletContext().xxx
不知道这样是否可行!
0
子木007
子木007
放到引用js的那个 ftl 模版中。
0
pandyyan
pandyyan

引用来自“坑主”的答案

放到引用js的那个 ftl 模版中。
请问把什么放到ftl模板中?我没有用freemaker,我用的easyui。
子木007
子木007
那就是放到 jsp 中。 var BASE_PATH = "${BASE_PATH}"; 作为一个全局变量。
0
pandyyan
pandyyan

引用来自“Jieven”的答案

在JFinal启动的时候放到全局作用域里面去,然后通过JS从作用域取
JFinal.me().getServletContext().xxx
不知道这样是否可行!
谢谢,我先试试。
0
pandyyan
pandyyan

引用来自“ewangshi”的答案

在jsp中 "var basepath= '${BASE_PATH}';"

url : basepath + '/user/checkPower',

该方法可用,谢谢!!!
0
pandyyan
pandyyan

引用来自“pandyyan”的答案

引用来自“坑主”的答案

放到引用js的那个 ftl 模版中。
请问把什么放到ftl模板中?我没有用freemaker,我用的easyui。
嗯,是的,作为全局变量就可以解决该问题了,谢谢!
0
yanick
yanick

引用来自“pandyyan”的评论

引用来自“pandyyan”的答案

引用来自“坑主”的答案

放到引用js的那个 ftl 模版中。
请问把什么放到ftl模板中?我没有用freemaker,我用的easyui。
嗯,是的,作为全局变量就可以解决该问题了,谢谢!
如果$.ajax方法放在单独的js文件中,怎么弄比较好?
pandyyan
pandyyan
可以在jsp中的script标签中声明一个全局变量,js文件中就可以用了。
返回顶部
顶部