Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 导叶头部渲染顺序_Wicket - Fatal编程技术网

Wicket 导叶头部渲染顺序

Wicket 导叶头部渲染顺序,wicket,Wicket,我有Wicket申请表。我想在页面js之后呈现一些面板js代码。 为了将JS呈现到pagee中,我使用renderHead方法 @Override public void renderHead(IHeaderResponse response) { response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/cor

我有Wicket申请表。我想在页面js之后呈现一些面板js代码。 为了将JS呈现到pagee中,我使用renderHead方法

@Override
public void renderHead(IHeaderResponse response) {
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/jquery.min.js")));
    super.renderHead(response);

    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/popper.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/bootstrap.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/jquery.slimscroll.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/jquery.scrollLock.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/jquery.appear.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/jquery.countTo.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/core/js.cookie.min.js")));
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(BasePage.class, "assets/js/codebase.js")));
}
还想在面板上添加一些与面板相关的代码

@Override
public void renderHead(IHeaderResponse response) {
    super.renderHead(response);
    response.render(JavaScriptReferenceHeaderItem.forReference(new JavaScriptResourceReference(CompanySignUpPanelStep23.class, "CompanySignUpPanelStep23.js")));
}
panel js依赖于页面呈现的jQuery

看起来像wicket使用internalRenderHead渲染它,首先渲染Childs,然后渲染自己的头部

/**
 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT.
 * 
 * Print to the web response what ever the component wants to contribute to the head section.
 * Make sure that all attached behaviors are asked as well.
 * <p>
 * NOT intended for overriding by framework clients. Rather, use
 * {@link Component#renderHead(org.apache.wicket.markup.head.IHeaderResponse)}
 * </p>
 * 
 * @param container
 *            The HtmlHeaderContainer
 */
public void internalRenderHead(final HtmlHeaderContainer container)
{
    if (isVisibleInHierarchy() && isRenderAllowed())
    {
        if (log.isDebugEnabled())
        {
            log.debug("internalRenderHead: {}", toString(false));
        }

        IHeaderResponse response = container.getHeaderResponse();

        // Allow component to contribute
        if (response.wasRendered(this) == false)
        {
            StringResponse markupHeaderResponse = new StringResponse();
            Response oldResponse = getResponse();
            RequestCycle.get().setResponse(markupHeaderResponse);
            try
            {
                // Make sure the markup source strategy contributes to the header first
                // to be backward compatible. WICKET-3761
                getMarkupSourcingStrategy().renderHead(this, container);
                CharSequence headerContribution = markupHeaderResponse.getBuffer();
                if (Strings.isEmpty(headerContribution) == false)
                {
                    response.render(StringHeaderItem.forString(headerContribution));
                }
            }
            finally
            {
                RequestCycle.get().setResponse(oldResponse);
            }
            // Then let the component itself to contribute to the header
            renderHead(this, response);

            response.markRendered(this);
        }

        // Then ask all behaviors
        for (Behavior behavior : getBehaviors())
        {
            if (isBehaviorAccepted(behavior))
            {
                if (response.wasRendered(behavior) == false)
                {
                    behavior.renderHead(this, response);
                    List<IClusterable> pair = Arrays.asList(this, behavior);
                    response.markRendered(pair);
                }
            }
        }
    }
}
/**
*此方法不是WICKET公共API的一部分。不要使用它。
* 
*在web响应中打印组件希望为head部分提供的内容。
*确保同时询问所有附加的行为。
*
*不打算被框架客户端覆盖。相反,使用
*{@link Component#renderHead(org.apache.wicket.markup.head.IHeaderResponse)}
*

* *@param容器 *HtmlHeaderContainer */ 公共void internalRenderHead(最终HtmlHeaderContainer容器) { 如果(isVisibleInHierarchy()&&isRenderAllowed()) { if(log.isDebugEnabled()) { debug(“internalRenderHead:{}”,toString(false)); } IHeaderResponse response=container.getHeaderResponse(); //允许组件参与 if(response.wasprended(this)=false) { StringResponse=new StringResponse(); Response oldsponse=getResponse(); RequestCycle.get().setResponse(MarkReaderResponse); 尝试 { //确保标记源策略首先对标头作出贡献 //要向后兼容。WICKET-3761 GetMarkupSourceStrategy().renderHead(此,容器); CharSequence headerContribution=markupHeaderResponse.getBuffer(); if(Strings.isEmpty(headerContribution)==false) { 响应。呈现(StringHeaderItem.forString(headerContribution)); } } 最后 { RequestCycle.get().setResponse(oldResponse); } //然后让组件本身参与到标题中 renderHead(这个,响应); 答复.已提交(本); } //然后问所有的行为 对于(行为:getBehaviors()) { 如果(isBehaviorAccepted(behavior)) { if(response.wasprended(behavior)==false) { renderHead(这个,响应); List pair=Arrays.asList(这个,行为); 响应。标记(对); } } } } }
有没有办法确定顺序?

您应该改用Wicket/ResourceReference依赖项

Panel.js的
JavaScriptResourceReference
应该覆盖其
#getDependencies()
方法,并返回一个
列表,其中包含
jQuery.js的
ResourceReference
。这样,每个资源将声明其依赖项,Wicket将以正确的顺序呈现它们

例如,见