我有一个命令bean( FooList),它有一个属性是一个集合(List的Foo豆).
我正在尝试创建一个可以同时编辑所有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中检查请求属性中的值?我试过<#if*$ {RequestParameters ['servicesettings']} ??>但是得到错误 - >
在线遇到"*"
有人可以帮忙吗?
我有一些基本的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()?
可能它不可能,
但我想用freemarker转换地图中的json字符串
例如:
<#assign test = "{\"foo\":\"bar\", \"f\":4, \"text\":\"bla bla\"}">
Run Code Online (Sandbox Code Playgroud)
并能够从此字符串中获取文本键
我在freemarker中声明了一个变量
<#assign myvariable= "value">
Run Code Online (Sandbox Code Playgroud)
我想在我的javascript函数中访问它,如下所示
function myfunction(){
alert(myvariable);
}
Run Code Online (Sandbox Code Playgroud) 我使用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?
谢谢,马雷克
我以前曾尝试将访问器添加到LineItem类,例如
public String getItemNo() {
return itemNo;
}
Run Code Online (Sandbox Code Playgroud)
并将FTL从更改为${lineItem.itemNo},${lineItem.getItemNo()}但这没有用。解决方案是添加访问器,但不更改FTL(将其保留为)${lineItem.itemNo}。
我正在使用Freemarker格式化某些电子邮件。在这封电子邮件中,我需要列出许多产品信息行,例如发票上的行。我的目标是传递一个对象列表(在Map内),以便可以在FTL中遍历它们。当前,我遇到一个问题,无法从模板中访问对象属性。我可能只想念一些小东西,但此刻我很沮丧。
这是我的代码的简化版本,目的是为了更快地理解问题。LineItem是具有公共属性(与此处使用的名称匹配)的公共类,使用简单的构造函数来设置每个值。我也尝试过使用带有访问器的私有变量,但这也不起作用。
我也这样存储List的LineItem对象内的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) 是否可以在ftl中定义自定义内置版(名称不再适合)?
由于语义前提,我不想让它成为一个函数,而是一个内置函数.
在这里搜索之后,那里(Google,...)和所有地方都没有找到任何关闭的东西我决定在这里发布我的问题.
是否有任何(在线)工具来测试(简单(r))Freemarker模板,以便作为前端开发人员我可以使用它而无需一些大型(资源饥饿和缓慢)IDE和服务器(Tomcat)只是为了看到HTML/CSS/JS生成到底?
例如:
或者每个人都喜欢部署(或购买JRebel ......)?
有没有人知道freemarker标签来检查freemarker文件中的spring安全角色和用户名?
我从网上的几个资源中发现以下代码将打印登录的用户名.但它不是打印用户名,而是打印"登录为"
<security:authorize access="isAuthenticated()">
logged in as <security:authentication property="principal.username" />
</security:authorize>
Run Code Online (Sandbox Code Playgroud)
检查Freemarker文件中的角色也不起作用.有没有人以前做过?
freemarker ×10
java ×3
javascript ×2
integration ×1
jquery ×1
security ×1
sitemesh ×1
spring ×1
spring-mvc ×1
struts2 ×1