标签: freemarker

用于对象集合的表单的Freemarker语法(Spring 3 MVC)

我有一个命令bean( FooList),它有一个属性是一个集合(ListFoo豆).

我正在尝试创建一个可以同时编辑所有Foos 的表单.我已经找到了许多使用JSP来完成此操作的示例,但是我将这些示例转换为Freemarker语法时遇到了问题.

在我的Freemarker模板中,我可以轻松地遍历集合:

[#list fooList.foos as foo]
...
[/#list]
Run Code Online (Sandbox Code Playgroud)

我也可以Foo通过索引来引用一个特定的:

[@spring.bind "fooList.foos[0].name" /]
<input type="text" name="${spring.status.expression}" value="${spring.status.value?default('')}"/>
Run Code Online (Sandbox Code Playgroud)

但是,我还没有弄清楚我如何同时做两件事,将所有的Foos 绑定到形成元素.

这是一次失败的天真尝试:

[#list fooList.foos as foo]
    [@spring.bind "fooList.foos[foo_index].name" /]
    ...
[/#list]
Run Code Online (Sandbox Code Playgroud)

(就其本身而言,${foo_index}在循环内部工作.)

谁能指出我正确的方向?

谢谢.

freemarker spring-mvc

5
推荐指数
1
解决办法
4251
查看次数

在freemarker中获取请求属性

如何在freemarker中检查请求属性中的值?我试过<#if*$ {RequestParameters ['servicesettings']} ??>但是得到错误 - >

在线遇到"*"

有人可以帮忙吗?

freemarker

5
推荐指数
1
解决办法
9995
查看次数

如何从Freemarker调用JavaScript函数?

我有一些基本的JavaScript函数:

<script type="text/javascript">
    function someTestFunction(param1, param2) {
        //do something
    }
</script>
Run Code Online (Sandbox Code Playgroud)

和Freemarker代码:

<#if something==somethingElse>
    // call: someTestFunction(something, 123)
<#else>
    // call: someTestFunction(somethingElse, 345)
</#if>
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可能,如果可以,如何从freemarker标签内部调用someTestFunction()?

javascript freemarker

5
推荐指数
1
解决办法
2万
查看次数

Freemarker将String解析为Json

可能它不可能,
但我想用freemarker转换地图中的json字符串

例如:

<#assign test = "{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}">
Run Code Online (Sandbox Code Playgroud)

并能够从此字符串中获取文本

freemarker

5
推荐指数
2
解决办法
2万
查看次数

在javascript/Jquery中使用freemarker变量

我在freemarker中声明了一个变量

<#assign myvariable= "value">
Run Code Online (Sandbox Code Playgroud)

我想在我的javascript函数中访问它,如下所示

function myfunction(){

    alert(myvariable);

}
Run Code Online (Sandbox Code Playgroud)

javascript jquery freemarker

5
推荐指数
2
解决办法
2万
查看次数

Struts 2 + Sitemesh 3集成 - FreemarkerDecoratorServlet中的NPE

我使用Struts 2(版本2.3.14.3)和Sitemesh 3(版本3.0-alpha-2),我在cerain情况下得到一个NullPointerException.

首先,这是我在web.xml中的struts2/sitemesh配置:

<filter-mapping>
    <filter-name>struts-prepare</filter-name>
    <url-pattern>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>sitemesh</filter-name>
    <url-pattern>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

<filter-mapping>
    <filter-name>struts-execute</filter-name>
    <url-pattern>*.do</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

<servlet>
    <servlet-name>sitemesh-freemarker</servlet-name>
    <servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class>
    <init-param>
        <param-name>default_encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)

现在,这是问题描述:

如果启用了struts dev.mode并且我尝试访问不存在的操作,则抛出struts ConfigurationException.

Struts调度程序尝试通过调用org.apache.struts2.dispatcher.Dispatcher.sendError()来处理异常,该函数将标准Struts错误模板(/org/apache/struts2/dispatcher/error.ftl)写入响应.

现在这是事情开始出错的时候了.

因为原始请求是用sitemesh过滤器修饰的,即使发生配置错误之后,sitemesh也会尝试应用装饰器,这会导致异常,因为由于配置异常导致Struts操作上下文设置不正确而且我得到以下内容:

java.lang.NullPointerException
org.apache.struts2.sitemesh.FreemarkerDecoratorServlet.process(FreemarkerDecoratorServlet.java:176)
Run Code Online (Sandbox Code Playgroud)

以下是来自FreemarkerDecoratorServlet.java的相应代码 - ctx变量为null:

ActionContext ctx = ServletActionContext.getActionContext(request);
model = freemarkerManager.buildTemplateModel(ctx.getValueStack(), ctx.getActionInvocation().getAction(), servletContext, request, response, wrapper);
Run Code Online (Sandbox Code Playgroud)

我认为sitemesh不应该尝试装饰响应,以防在调用操作时出现错误,但我不知道如何在不修改Struts2/Sitemesh集成的情况下执行此操作.

任何想法如何避免NPE?

谢谢,马雷克

java integration freemarker struts2 sitemesh

5
推荐指数
1
解决办法
948
查看次数

访问&lt;#list&gt;中的对象的属性

我以前曾尝试将访问器添加到LineItem类,例如

public String getItemNo() {
    return itemNo;
}
Run Code Online (Sandbox Code Playgroud)

并将FTL从更改为${lineItem.itemNo}${lineItem.getItemNo()}但这没有用。解决方案是添加访问器,但更改FTL(将其保留为)${lineItem.itemNo}

背景

我正在使用Freemarker格式化某些电子邮件。在这封电子邮件中,我需要列出许多产品信息行,例如发票上的行。我的目标是传递一个对象列表(在Map内),以便可以在FTL中遍历它们。当前,我遇到一个问题,无法从模板中访问对象属性。我可能只想念一些小东西,但此刻我很沮丧。

使用Freemarker的Java类

这是我的代码的简化版本,目的是为了更快地理解问题。LineItem是具有公共属性(与此处使用的名称匹配)的公共类,使用简单的构造函数来设置每个值。我也尝试过使用带有访问器的私有变量,但这也不起作用。

我也这样存储ListLineItem对象内的Map,因为我也使用Map其他键/值对。

Map<String, Object> data = new HashMap<String, Object>();
List<LineItem> lineItems = new ArrayList<LineItem>();

String itemNo = "143";
String quantity = "5"; 
String option = "Dried";
String unitPrice = "12.95";
String shipping = "0.00";
String tax = "GST";
String totalPrice = "64.75"; 

lineItems.add(new LineItem(itemNo, quantity, option, unitPrice, shipping, tax, totalPrice)); …
Run Code Online (Sandbox Code Playgroud)

java freemarker

5
推荐指数
1
解决办法
1万
查看次数

Freemarker - 定义自定义内置版本/过滤器

是否可以在ftl中定义自定义内置版(名称不再适合)?
由于语义前提,我不想让它成为一个函数,而是一个内置函数.

freemarker

5
推荐指数
1
解决办法
493
查看次数

用于测试freemarker模板的在线工具(前端)?

在这里搜索之后,那里(Google,...)和所有地方都没有找到任何关闭的东西我决定在这里发布我的问题.

是否有任何(在线)工具来测试(简单(r))Freemarker模板,以便作为前端开发人员我可以使用它而无需一些大型(资源饥饿和缓慢)IDE和服务器(Tomcat)只是为了看到HTML/CSS/JS生成到底?

例如:

  1. 定义后端数据(字符串,数组,对象......),
  2. 写freemarker逻辑(自动检查语法),
  3. 跑,看最后的结果

或者每个人都喜欢部署(或购买JRebel ......)?

freemarker

5
推荐指数
0
解决办法
3183
查看次数

在Freemarker模板中检查Spring安全角色和已记录的用户名

有没有人知道freemarker标签来检查freemarker文件中的spring安全角色和用户名?

我从网上的几个资源中发现以下代码将打印登录的用户名.但它不是打印用户名,而是打印"登录为"

<security:authorize access="isAuthenticated()">
    logged in as <security:authentication property="principal.username" /> 
</security:authorize>
Run Code Online (Sandbox Code Playgroud)

检查Freemarker文件中的角色也不起作用.有没有人以前做过?

java security spring freemarker

5
推荐指数
1
解决办法
6841
查看次数