Freemarker使用Struts2的select标签的时候ognl表达式问题

使用Freemarker,发现个问题。

<@s.select name="myName" list="#{"1":"Type1", "2":"Type2"}" />

这样的代码抛出异常,解析错误。

仔细查了一下google,只找到两篇帖子讲明白了这么回事。首先#{}是个freemarker的语法,所以不能用在这里。

可以:<@s.select name="myName" list=r"#{"1":"Type1", "2":"Type2"}" />

这个r让后面的字符串不解析,直接给tag。
还可以

<@s.select name="myName" list={"1":"Type1", "2":"Type2"} />

但是这样会导致输出Key的toString方法,必须加上listKey="key" listValue="value"才能解决,也就是:

<@s.select name="myName" list={"1":"Type1", "2":"Type2"} listKey="key" listValue="value"/>

相关推荐