Re: [FreeMarker-user] Could get to work BEANWRAPPER
Generates text that depends on changing data (like dynamic HTML).
Brought to you by:
revusky
From: Jonathan R. <re...@gm...> - 2006-06-28 15:39:42
|
Tom Schindl wrote: > There must be something really obvious wrong in my code but I can't > grasp what it is. Anybody out-there to help out? I think the problem is that the User class is private and the introspection machinery is not finding the getName() method. I know that getName() is public, but probably both the class and the method need to be public. JR > > ------------------------8<------------------------ >> import java.io.FileOutputStream; >> import java.io.IOException; >> import java.io.InputStream; >> import java.io.InputStreamReader; >> import java.io.OutputStreamWriter; >> import java.io.Reader; >> import java.io.StringReader; >> import java.io.StringWriter; >> import java.util.ArrayList; >> import java.util.HashMap; >> >> import freemarker.ext.beans.BeansWrapper; >> import freemarker.template.Configuration; >> import freemarker.template.ObjectWrapper; >> import freemarker.template.Template; >> import freemarker.template.TemplateException; >> >> >> public class TestIt { >> public static void main(String[] args) { >> HashMap<String, Object> model = new HashMap<String, Object>(); >> ArrayList<User> l = new ArrayList<User>(); >> l.add(new User("Tom")); >> l.add(new User("Sepp")); >> >> model.put("users", l); >> model.put("myUser", new User("SAU")); >> >> Template template; >> try { >> Configuration cfg = new Configuration(); >> cfg.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER); >> template = new Template("test.txml", new StringReader(readTemplateSource(TestIt.class.getResourceAsStream("test.txml"))), cfg); >> template.process(model, new OutputStreamWriter(new FileOutputStream("/tmp/test.xml"), "UTF-8")); >> } catch (IOException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } catch (TemplateException e) { >> // TODO Auto-generated catch block >> e.printStackTrace(); >> } >> >> } >> >> private static String readTemplateSource(InputStream input) throws IOException { >> Reader reader = new InputStreamReader(input, "UTF-8"); >> StringWriter writer = new StringWriter(); >> char[] buffer = new char[1024]; >> while (true) { >> int length = reader.read(buffer, 0, 1024); >> if (length == -1) break; >> writer.write(buffer, 0, length); >> } >> return writer.toString(); >> } >> >> private static class User { >> private String name = "Hans"; >> >> public User(String n) { >> this.name = n; >> } >> >> public String getName() { >> return name; >> } >> >> public void setName(String name) { >> this.name = name; >> } >> >> } >> } > ------------------------8<------------------------ > > test.txml: > ------------------------8<------------------------ > ${myUser.name} > ------------------------8<------------------------ > > Error-Message: > ------------------------8<------------------------ >> Expression myUser.name is undefined on line 1, column 3 in test.txml. >> The problematic instruction: >> ---------- >> ==> ${myUser.name} [on line 1, column 1 in test.txml] >> ---------- >> >> Java backtrace for programmers: >> ---------- >> freemarker.core.InvalidReferenceException: Expression myUser.name is undefined on line 1, column 3 in test.txml. >> at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124) >> at freemarker.core.Expression.getStringValue(Expression.java:118) >> at freemarker.core.Expression.getStringValue(Expression.java:93) >> at freemarker.core.DollarVariable.accept(DollarVariable.java:76) >> at freemarker.core.Environment.visit(Environment.java:196) >> at freemarker.core.Environment.process(Environment.java:176) >> at freemarker.template.Template.process(Template.java:232) >> at TestIt.main(TestIt.java:34) > ------------------------8<------------------------ > > Tom > > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > FreeMarker-user mailing list > Fre...@li... > https://lists.sourceforge.net/lists/listinfo/freemarker-user > |