2つのストラットtaglibを互いに使用したいのですが、次のようになります。
< s:property value="url-< s:property value="number"/>"/>
また
< s:property value="url-${number}"/>
しかし、2番目のエラーで次のエラーが発生しました。
TLDまたはタグファイルの属性ディレクティブによると、属性値は式を受け入れません。
誰かが解決策を持っていますか?
ありがとう
あなたも使うことができます
<s:property value="'url-'+'%{number}'"/>
Strutsは、%{yourAttribute}の形式のOGNL式を受け入れます
解決策は簡単すぎました!
私たちの友人のleonbloyが言ったように、数値はイテレータで生成されたときに値スタックになりました。だから私はそれの名前を書くべきです:
<s:property value="url-number"/>
" number
"の値が固定されている場合(jsp生成の時点で、つまり、jspで設定されていないか、イテレータで変更されていない場合)、アクションのメソッドにリファクタリングすることをお勧めします。たとえば、「number
」がアクションのプロパティである場合:
public String getUrlWithNumber() {
return "url-" + String.valueOf(getNumber());
}
<s:property value="urlWithNumber"/>
他の場所では、(テストされていない)として何かを試すことができます
public String buildUrlWithNumber(int number) {
return "url-" + String.valueOf(number);
}
<s:property value="buildUrlWithNumber(${number})"/>
またはそのようなもの。