freemarker模板中的JSTL错误

时间:2013-04-09 18:40:35

标签: jstl freemarker

我正在尝试在Freemarker模板中实现JSTL。为此,我得到了一个示例freemarker模板示例,并尝试合并JSTL命名空间并尝试执行它。 以下是我的代码现在的样子。

<html>
<head><title>ViralPatel.net - FreeMarker Spring MVC Hello World</title>
<#assign c=JspTaglibs["http://java.sun.com/jstl/core"]/>
<style>
body, input {
font-family: Calibri, Arial;
margin: 0px;
padding: 0px;
}
#header h2 {
color: white;
background-color: #3275A8;
height: 50px;
padding: 5px 0 0 5px;
font-size: 20px;
}

.datatable {margin-bottom:5px;border:1px solid #eee;border-      collapse:collapse;width:400px;max-width:100%;font-family:Calibri}
.datatable th {padding:3px;border:1px solid #888;height:30px;background-color:#B2D487;text-align:center;vertical-align:middle;color:#444444}
.datatable tr {border:1px solid #888}
.datatable tr.odd {background-color:#eee}
.datatable td {padding:2px;border:1px solid #888}
#content { padding 5px; margin: 5px; text-align: center}

fieldset { width: 300px; padding: 5px; margin-bottom: 0px; }
legend { font-weight: bold; }
</style>

<body>
<div id="header">
<H2>
<a href="http://viralpatel.net"><img height="37" width="236" border="0px" src="http://viralpatel.net/blogs/wp-content/themes/vp/images/logo.png" align="left"/></a>
FreeMarker Spring MVC Hello World
</H2>
 </div>

<div id="content">
<c:set var="Salary" value="4000/>
<c:out value="${Salary}/>

 <fieldset>
<legend>Add User</legend>
 <form name="user" action="add.html" method="post">
Firstname: <input type="text" name="firstname" />   <br/>
Lastname: <input type="text" name="lastname" /> <br/>


<input type="submit" value="   Save   " />
  </form>
  </fieldset>
  <br/>
  <table class="datatable">
<tr>
    <th>Firstname</th>  <th>Lastname</th>
</tr>
    <#list model["userList"] as user>
<tr>
    <td>${user.firstname}</td> <td>${user.lastname}</td>
</tr>
    </#list>

  </table>

</div>  
 </body>
</html>  

我知道问题在于我添加的新代码,即Salary,我看到以下错误。

freemarker.core.InvalidReferenceException: Expression Salary is undefined on line 62, column 5 in index.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)

我做错了什么?

由于 NIKHIL

1 个答案:

答案 0 :(得分:1)

你所做错的是不了解Freemarker的工作方式,并认为它在某种程度上完全无法使用JSP。据我所知,你已经导入了JSTL,以便在Freemarker已经这样做时设置和输出变量值。

替换它:

<c:set var="Salary" value="4000/>
<c:out value="${Salary}/>

......用这个:

<#assign Salary = 4000>
${Salary}

另外,摆脱JSTL taglib,只学习如何使用Freemarker。你会更开心。