1

Freemarker / Struts2 / Spring / Hibernateなどはまったく初めてですが、古いプロジェクトに取り組んでいます。いくつかの変更を反映するようにFTLファイルの1つを変更しましたが、奇妙な問題が発生しました。

これは機能します。つまり、正しい値が取得されます。

<@s.property value="#dataResult.gene.genbankId" />

ただし、これは行いません。

<a href="${geneBankLink}${dataResult.gene.genbankId}" target="_blank">

2つの線は、すぐに次々に発生します。

<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.geneではなくdataResultが未定義になります。

dataResult.gene属性にstruts表記でアクセスできるが、FreeMarker表記ではアクセスできない理由はありますか?

あるいは、この場合にFreeMarker表記を使用しないようにする方法で十分です。

4

2 に答える 2

0

数時間試行錯誤した結果、別のタグ内でも struts 構文を使用できることがわかりました。

したがって、これは実際に機能します:

<a href="${geneBankLink}<@s.property value="#dataResult.gene.genbankId" />" target="_blank">
<@s.property value="#dataResult.gene.genbankId" /> </a>

図に行きます。なぜそれが機能するのか、そもそもなぜ壊れたのかを知りたいと思っていますが、これで十分です...

于 2013-01-30T05:28:15.340 に答える
0

試しましたか:

<a href="${geneBankLink + #dataResult.gene.genbankId}" target="_blank">

${}- 式を意味し、内部のすべてが多かれ少なかれ Java コードとして扱われます (OGNL が処理します)。また#、値を解決する方法について少し異なる動作を定義します - ActionContext 全体を検索して値を見つけます

http://struts.apache.org/2.x/docs/access-to-valuestack-from-jsps.html http://struts.apache.org/2.x/docs/ognl.html

于 2013-01-30T06:50:00.693 に答える