通过wicket动态编写脚本src

通过wicket动态编写脚本src,wicket,Wicket,我希望我的页面将javascript动态加载到我的正文中: <script type= "text/javascript" src="this path should be decided from wicket dynamically"/> 我正在使用wicket1.4版,因此JavaScriptResourceReference在我的版本中不存在(供我检查,它不是') 我怎样才能解决这个问题? 提前谢谢:)。我不确定我是否完全理解了。 如果在加载页面后尝试创建脚本并将其附加

我希望我的页面将javascript动态加载到我的正文中

<script type= "text/javascript" src="this path should be decided from wicket dynamically"/>

我正在使用wicket1.4版,因此JavaScriptResourceReference在我的版本中不存在(供我检查,它不是')

我怎样才能解决这个问题?
提前谢谢:)。

我不确定我是否完全理解了。 如果在加载页面后尝试创建脚本并将其附加到正文中,则应按以下方式执行:

 <script type="text/javascript">
    function load_js() {
    var element = document.createElement("script");
    element.src = "scripts/YOUR_SCRIPT_SRC.js"; // <---- HERE <-----
    document.body.appendChild(element);
}

    // Wait for the page to be loaded

if(window.addEventListener)
    window.addEventListener("load",load_js,false);
else if(window.attachEvent)
    window.attachEvent("onload",load_js);
else
    window.onload = load_js;

</script>

函数加载_js(){
var元素=document.createElement(“脚本”);
element.src=“scripts/YOUR_SCRIPT_src.js”;//完全满足您的需要

您的标记中不需要任何内容,只需将
HeaderContributor
添加到页面中即可

更新:对于Wicket 1.5,请参见,但它是这样的:

public class MyPage extends WebPage {
   public MyPage() {
   }
   public void renderHead(IHeaderResponse response) {
     response.renderJavaScriptReference(new PackageResourceReference(YuiLib.class,
       "yahoo-dom-event/yahoo-dom-event.js"));
     response.renderCSSReference(new PackageResourceReference(AbstractCalendar.class,
      "assets/skins/sam/calendar.css"));
   }
}

如果您想将
元素放在主体中,只需将其声明为
WebMarkupContainer
,并添加
AttributeModifier
来设置
src
属性。尽管在这种情况下wicket不会为您生成相对URL,但您必须自己生成。

我在答案中指定了我的注释

您可以使用以下代码段:

WebMarkupContainer scriptContainer = new WebMarkupContainer("scriptContainer ");
scriptContainer .add(new AttributeAppender("type", Model.of("text/javascript")));
scriptContainer .add(
    new AttributeAppender("src", urlFor(
        new JavaScriptResourceReference(
            YourClass.class, "JavaScriptFile.js"), null).toString()));
add(scriptContainer );
以及相应的html:

<script wicket:id="scriptContainer "></script>


只需更改字符串
JavaScriptFile.js
即可加载任何其他Javascript文件。

看看我的问题……答案是:最重要的是从服务器端(通过wicket)获取src动态。你的anwser对我没有帮助……不幸的是,这只适用于Wicket 1.5之前的版本,并且只在头部添加Javascript文件。@rotsch我们确实需要一个版本化的Wicket标记。谁是你的class.class?包含scriptContainer的面板?是的,例如。它只是作用域,以及用于标识你的res的名称来源。