Используя две метки библиотеки struts2 друг в друге - PullRequest
0 голосов
/ 24 мая 2010

Я хочу использовать две метки taglib друг в друге, что-то вроде этого:

< s:property value="url-< s:property value="number"/>"/>

или

< s:property value="url-${number}"/>

но я получил следующую ошибку во второй:

В соответствии с TLD или директивой атрибута в файле тега, значения атрибута не принимают выражений.

У кого-нибудь есть решение?

Спасибо

Ответы [ 3 ]

2 голосов
/ 10 апреля 2011

Вы также можете использовать

<s:property value="'url-'+'%{number}'"/>

Struts принимает выражения OGNL в формате% {yourAttribute}

0 голосов
/ 25 мая 2010

Решение было слишком простым!

Как сказал наш друг leonbloy, число теперь в стеке значений, когда оно генерируется в итераторе. поэтому я должен просто написать это имя:

<s:property value="url-number"/>
0 голосов
/ 24 мая 2010

Если значение "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})"/>

или что-то подобное.1009 *

...