Re: accessing JAXB generated properties of a bean (accessing static inner class)
Angelo zerr <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <CAKLdLg_+cc+z6R+a7GAY6qPeeDRfQ4_aAFmfRbaENP4+HhM0Fg@mail.gmail.com> |
Hi Robert, " wanted to use it to generate spreadsheetML(xml that Excel will open as if it were a xlsx file)" It seems that you wish do the same thing than our XDocReport<http://code.google.com/p/xdocreport/>project. Today we have implemented well docx+odt (and a few pptx). We could start to implement xlsx if you wish and work together? Jus a question : you wish generate a xlsx from scratch or design your xlsx with MS Excel and set Freemarker directive (it's the goal of XDocReport). Regards Angelo Le 30 mars 2012 13:27, Daniel Dekany <[email protected]> a écrit : > How the templates sees the objects depends on the ObjectWrapper. As I > see you are using the DefaultObjectWrapper, which means that when you > write someExp.bar in a template, that it does one of these: > > - someExp is instanceof Map, in which case it calls someExp.get("bar") > in Java > > - someExp is instanceof org.w3c.dom.Node, in which case it calls > something like someExp.getElementsByTagNameNS(defaultNS, "bar") in > Java > > - Some other cases exist that are not relevant for you... > > - Otherwise it calls someExp.getBar() in Java (or whatever the > BeanInfo sais the reader method is) > > and if you have someExp[numericalIndex] then it will try to do > someExp.get(numericalIndex), the List method. (Unless it's also a > Map... I can't remember which one had priority in that case.) > > So keeping these in mind, you thing your code should work? I don't > know... I don't see much from the source code excerpts given. Like how > a NetworkList ended up being a scalar (i.e., a string), I don't know. > > Why is it relevant that the classes are generated with JAXB? I mean, > it should be clear that to use the XML-wrapper, the objects had to > implement org.w3c.dom.Node. > > -- > Best regards, > Daniel Dekany > > > Friday, March 30, 2012, 5:55:30 AM, Walker, Robert wrote: > > > Hi all, I was turned onto freemarker today and really impressed > > with it, and wanted to use it to generate spreadsheetML > > (xml that Excel will open as if it were a xlsx file) > > > > I am having problems accessing properties buried a few layers deep. > > > > Basically, I have a OrganisationInfo class which contains an > > OrganisationInfo. NetworkList object, > > And that networkList property contains a List of Network objects, from > which I need to get > > property values. > > > > I am wondering if JAXB has generated something freemarker can’t be used > to access in it’s template. > > > > I want to try something like > > > > cfg.setObjectWrapper( new DefaultObjectWrapper() ); > > SimpleHash root = new SimpleHash(); > > // expose JAXB generated java object > > root.put("organisationInfo", organisationInfo); > > > > then my template has accessing syntax like > > > > <h1> ${organisationInfo.networkList[0].tadigCode} </h1> > > > > Is this possible with freemarker? Is there an example of this anywhere? > > I get various errors Expected hash. organisationInfo.networkList[0] > > evaluated instead to freemarker.template.SimpleScalar. > > > > Thanks all > > > > > > > > > > I have JAXB generated classes like this > > > > OrganisationInfo.java > > ===================== > > @XmlRootElement(name = "OrganisationInfo") > > public class OrganisationInfo > > { > > @XmlElement(name = "NetworkList", required = true) > > protected OrganisationInfo.NetworkList networkList; > > > > . > > . > > . > > > > @XmlAccessorType(XmlAccessType.FIELD) > > @XmlType(name = "", propOrder = {"network"}) > > public static class NetworkList > > { > > @XmlElement(name = "Network", required = true) > > protected List<Network> network; > > . > > . > > } > > } > > > > > > Network.java > > ============ > > @XmlRootElement(name = "Network") > > public class Network > > { > > @XmlElement(name = "TADIGCode", required = true) > > protected String tadigCode; > > > > . > > . > > > > } > > > > ------------------------------------------------------------------------------ > This SF email is sponsosred by: > Try Windows Azure free for 90 days Click Here > http://p.sf.net/sfu/sfd2d-msazure > _______________________________________________ > FreeMarker-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/freemarker-user > ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ FreeMarker-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freemarker-user