PDA

View Full Version : Freemarker errorMessages not working.



sergi
Nov 13th, 2006, 06:59 PM
Hi,

I'm using Freemarker as the view technology, but I have problems while trying to show the errors. I have a simple form like this one:



<#import "spring.ftl" as spring>

<form action="" method="post">
<table>
<tr>
<td colspan=2>
<#list spring.status.errorMessages as error> <b>${error}</b> <br> </#list>

</td>
</tr>
<tr>
<td>
<@spring.messageText "login.username", "username"/>
</td>
<td>
<@spring.formInput "login.username", "","text"/>
</td>
</tr>
<tr>
<td>
<@spring.messageText "login.password","password"/>
</td>
<td>
<@spring.formInput "login.password", "", "password"/>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Login"></td>
</tr>
</table>
</form>


And in my xml file:



<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.Fr eeMarkerViewResolver">
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="exposeRequestAttributes" value="true" />
<property name="exposeSessionAttributes" value="true" />
</bean>


But I get the following error:


Expression spring.status is undefined on line 14, column 24 in login.ftl.
The problematic instruction: ---------- ==> list spring.status.errorMessages as error [on line 14, column 17 in login.ftl] ----------
Java backtrace for programmers: ---------- freemarker.core.InvalidReferenceException: Expression spring.status is undefined on line 14, column 24 in login.ftl. at freemarker.core.TemplateObject.assertNonNull(Templ ateObject.java:124) at freemarker.core.TemplateObject.invalidTypeExceptio n(TemplateObject.java:134) at
.....


I don't know why, 'cause if I remove the showing-error line, everything works. Any ideas? Has anyone had the same problem before?

Thanks.

isa.goksu
Jan 30th, 2007, 02:56 AM
You should define spring.ftl at the beginning of your freemarker template. Check below:



<#import "/spring.ftl" as spring />
..
..

<#if spring.status.error>
....
</#if>

elreydetodo
Dec 15th, 2008, 10:18 PM
I hate to resurrect a long-dead thread, but I'm having *exactly* this problem and I *SWEAR* I'm importing spring.ftl already. Does anyone have any other ideas for what the problem is?



<#import "/spring.ftl" as spring>
...

<#if spring.status.error>
<div class="errors">
There were problems with the data you entered:
<ul>
<#list spring.status.errorMessages as error>
<li>${error?html}</li>
</#list>
</ul>
</div>
<#else>
<div class="errors">
There are no errors.
</div>
</#if>


results in:


Expression spring.status is undefined on line 35, column 6 in whatever_file.ftl.
The problematic instruction:
----------
==> if-else [on line 35, column 1 in whatever_file.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression spring.status is undefined on line 35, column 6 in patient_demographics_phone_numbers.ftl.
at freemarker.core.TemplateObject.assertNonNull(Templ ateObject.java:124)
at freemarker.core.TemplateObject.invalidTypeExceptio n(TemplateObject.java:134)
...


Can someone PLEASE tell me what the heck I'm doing wrong?! I'm so frustrated now! I've been trying to get this resolved for hours now!

diveshpremdeep
Jan 29th, 2009, 08:53 AM
I hate to resurrect a long-dead thread, but I'm having *exactly* this problem and I *SWEAR* I'm importing spring.ftl already. Does anyone have any other ideas for what the problem is?



<#import "/spring.ftl" as spring>
...

<#if spring.status.error>
<div class="errors">
There were problems with the data you entered:
<ul>
<#list spring.status.errorMessages as error>
<li>${error?html}</li>
</#list>
</ul>
</div>
<#else>
<div class="errors">
There are no errors.
</div>
</#if>


results in:


Expression spring.status is undefined on line 35, column 6 in whatever_file.ftl.
The problematic instruction:
----------
==> if-else [on line 35, column 1 in whatever_file.ftl]
----------

Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression spring.status is undefined on line 35, column 6 in patient_demographics_phone_numbers.ftl.
at freemarker.core.TemplateObject.assertNonNull(Templ ateObject.java:124)
at freemarker.core.TemplateObject.invalidTypeExceptio n(TemplateObject.java:134)
...


Can someone PLEASE tell me what the heck I'm doing wrong?! I'm so frustrated now! I've been trying to get this resolved for hours now!

Hey...I'm facing the same issue and have been trying to get this solved for around a week now :(...SOS !

elreydetodo
Jan 30th, 2009, 10:14 PM
I managed to solve this sorta after looking at the code in spring.ftl. I put this code into a separate file errors.ftl and I include it in any template that needs to show these errors:


<#import "/spring.ftl" as spring />
<@spring.bind "command" />
<#if spring.status.error>
<div class="errors">
There were problems with the data you entered:
<ul>
<#list spring.status.errorMessages as error>
<li>${error?html}</li>
</#list>
</ul>
</div>
</#if>

Notice the @spring.bind thing? That's what made the whole thing work I think.

sabbath-shadow
Feb 11th, 2010, 09:33 AM
the meaning thing is that in <@spring.bind "command" /> there should be a string, not a command object itself.