我对 Freemarker/Struts2/Spring/Hibernate 等很陌生,但我正在做一个旧项目。我修改了一个 FTL 文件以反映一些更改,但我遇到了一个奇怪的问题。
这有效,即检索到正确的值:
<@s.property value="#dataResult.gene.genbankId" />
但是,这不会:
<a href="${geneBankLink}${dataResult.gene.genbankId}" target="_blank">
这两行紧接着出现,即
<a href="${geneBankLink}${dataResult.gene.genbankId}" target="_blank">
<@s.property value="#dataResult.gene.genbankId" /> </a>
产生的错误(简而言之)是:
表达式 dataResult.gene 未定义
freemarker.core.InvalidReferenceException:表达式 dataResult.gene 在 web/search/search_data_result.ftl 的第 54 行第 51 列上未定义。
对我来说奇怪的是它确实找到了 dataResult,否则错误将是 dataResult 未定义,而不是 dataResult.gene。
为什么 dataResult.gene 属性可以通过 struts 表示法访问,但不能通过 FreeMarker 表示法访问?
或者,在这种情况下避免使用 FreeMarker 符号的方法就足够了。