为什么这里呈现的模板不正确?

发布于 2024-12-25 19:27:33 字数 904 浏览 0 评论 0原文

我使用几个参数调用 render() ,其中第一个是我作为参数获得的 String 参数:

public static void action(String url) { ...

渲染(网址,...); 现在

我收到此错误:

The template http://the.contents.of/urlParameter does not exist.

,我正在通过 render() 进行调试,我在其中看到以下代码片段:

protected static void render(Object... args) {
    String templateName = null;
    if (args.length > 0 && args[0] instanceof String && LocalVariablesNamesTracer.getAllLocalVariableNames(args[0]).isEmpty()) {

        // I'm getting into this branch

        templateName = args[0].toString();
    } else {
        templateName = template();
    }
    renderTemplate(templateName, args);
}

What is the if试图完成?为什么我要进入它 - 是因为我没有使用 url 的局部变量吗?这有记录吗?这里的道理是什么?

我正在使用版本 1.2.x-c40cf37(位于 1.2.4 之后的某个位置)。

I'm calling render() with a few arguments, the first of which is a String argument that I got as a parameter:

public static void action(String url) {
...

render(url,...);
}

I'm getting this error:

The template http://the.contents.of/urlParameter does not exist.

Now, I'm debugging through render(), where I see this snippet:

protected static void render(Object... args) {
    String templateName = null;
    if (args.length > 0 && args[0] instanceof String && LocalVariablesNamesTracer.getAllLocalVariableNames(args[0]).isEmpty()) {

        // I'm getting into this branch

        templateName = args[0].toString();
    } else {
        templateName = template();
    }
    renderTemplate(templateName, args);
}

What is the if trying to accomplish? Why am I getting into it - is it because I'm not using a local variable for url? Is this documented? What's the reasoning here?

I'm using version 1.2.x-c40cf37 (that's somewhere after 1.2.4).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱你不解释 2025-01-01 19:27:33

如果您提供一个字符串作为第一个参数,则它假定它是要呈现的模板的名称。

示例:

render("@password", url);

这将呈现密码模板并将 url 变量传递给它。

在你的情况下,你可以做这样的事情:

render("@action", url);

编辑:

作为替代方案,你也可以做这样的事情:

renderArgs.put("url", url);
render();

希望它有帮助。

If you provide a string as the first argument, then it assumes that it is the name of the template to render.

Example:

render("@password", url);

That will render the password-template and pass the url variable to it.

In your case you could do something like this instead:

render("@action", url);

EDIT:

As an alternative you could also do something like this:

renderArgs.put("url", url);
render();

Hope it helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文