Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Wicket提供动态JavaScript文件?_Java_Javascript_Wicket - Fatal编程技术网

如何从Wicket提供动态JavaScript文件?

如何从Wicket提供动态JavaScript文件?,java,javascript,wicket,Java,Javascript,Wicket,我正在Wicket建一个网站。我需要提供一个JavaScript文件,xyz.js,供其他人/网站直接阅读——也就是说,不要包含在我的HTML页面中 xyz.js需要一些基于请求期间提供给它的path\u info的动态内容,因此它需要是一个可以插入的模板 有没有一种方法可以让我使用Wicket来构建和服务这个JS文件 如果不是,最好的替代方案是什么?JSP文件?编辑:在我最初的回答中,我忽略了让这个JavaScript文件从公共URL可用的要求。在研究实现这一目标的方法时,我意识到我的整个方法

我正在Wicket建一个网站。我需要提供一个JavaScript文件,
xyz.js
,供其他人/网站直接阅读——也就是说,不要包含在我的HTML页面中

xyz.js
需要一些基于请求期间提供给它的
path\u info
的动态内容,因此它需要是一个可以插入的模板

有没有一种方法可以让我使用Wicket来构建和服务这个JS文件


如果不是,最好的替代方案是什么?JSP文件?

编辑:在我最初的回答中,我忽略了让这个JavaScript文件从公共URL可用的要求。在研究实现这一目标的方法时,我意识到我的整个方法是有缺陷的。所以,我把我的原始答案移到最后,并在这里提供一个更切题的答案

为了在公共URL(JavaScript或CSS)上发布文本资源,您需要在
WicketApplication
中编辑
init()
方法,方法是添加:

String resourceKey = "DYN_RES_KEY";
//load your text template
final TextTemplate textTemplate = new PackagedTextTemplate(MyPage.class, "script.js", "text/javascript", "UTF-8");
//add the resource
getSharedResources().add(resourceKey, new Resource() {
    @Override
    public IResourceStream getResourceStream() {
        String queryParam = getParameters().getString("paramName");
        //...do whatever you need with the parameters...
        Map<String,Object> vars = new HashMap<String,Object>();
        vars.put("param", queryParam);
        String stringValue = textTemplate.asString(vars);
        return new StringResourceStream(stringValue, textTemplate.getContentType());
    }
});
//mount the resource at some public URL
mountSharedResource("/resource", Application.class.getName() + "/" + resourceKey);
//make alias, optional
getSharedResources().putClassAlias(MyPage.class, "scripts");
String resourceKey=“DYN\u RES\u KEY”;
//加载文本模板
final TextTemplate TextTemplate=新的PackagedTextTemplate(MyPage.class,“script.js”,“text/javascript”,“UTF-8”);
//添加资源
getSharedResources().add(resourceKey,new Resource()){
@凌驾
公共IResourceStream getResourceStream(){
字符串queryParam=getParameters().getString(“paramName”);
//…对参数执行任何需要的操作。。。
Map vars=newhashmap();
变量put(“参数”,查询参数);
String stringValue=textTemplate.asString(vars);
返回新的StringResourceStream(stringValue,textTemplate.getContentType());
}
});
//将资源装载到某个公共URL
mountSharedResource(“/resource”,Application.class.getName()+”/“+resourceKey);
//使别名为可选
getSharedResources().putClassAlias(MyPage.class,“脚本”);
免责声明:此代码不是用IDE编写的,从未运行过。因此,它甚至可能无法编译。不过,这应该足以说明如何实现这一目标

此答案基于“”和“”,有关更多详细信息,请参阅这些来源

原始答案(如果您希望将JavaScript或CSS作为外部引用文件添加到Wicket页面,但不使其公开可见,则此选项非常有用):

查看Wicket wiki中的“”页面,并在JIRA中发布。自从Wicket 1.4.10以来,该类现在是Wicket核心的一部分,因此您不再需要复制粘贴它


wiki页面提到了CSS页面,但JavaScript或任何其他非标记文本内容的方法是相同的。

Hi,然后如何从其他站点调用该CSS/JavaScript?本说明仅说明如何将其包含在您自己的页面中。谢谢,汤姆