Преобразуйте общие строковые значения на странице в некоторую константу EL - PullRequest
2 голосов
/ 28 октября 2011

В компоненте JSF, каков наилучший способ «рефакторинга» общих констант, например, имена / пути в теге <h:graphicImage> к одному локальному временному свойству?

<ui:composite>

  <h:graphicImage library="mylib" name="/a/b/c/img1.png"/>
  <h:graphicImage library="mylib" name="/a/b/c/img2.png"/>
  <h:graphicImage library="mylib" name="/a/b/c/img3.png"/>
  <!-- ... lots of repetitions -->

</ui:composite>

должно быть

<ui:composite>

  <-- assign /a/b/c/ to path -->

  <h:graphicImage library="mylib" name="#{path}img1.png"/>
  <h:graphicImage library="mylib" name="#{path}img2.png"/>
  <h:graphicImage library="mylib" name="#{path}img3.png"/>
  <!-- ... lots of repetitions -->

</ui:composite>

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

Используйте <c:set> в области применения.Это в основном сохраняет переменную в карте приложения .

<c:set var="path" value="a/b/c/" scope="application" />
<h:graphicImage library="mylib" name="#{path}img1.png"/>
<h:graphicImage library="mylib" name="#{path}img2.png"/>
<h:graphicImage library="mylib" name="#{path}img3.png"/>

. Убедитесь, что var="path" не конфликтует с существующими именами управляемых бинов или неявными переменными EL и т.п.При необходимости вы можете использовать соглашение для добавления префикса _.

<c:set var="_path" value="a/b/c/" scope="application" />
<h:graphicImage library="mylib" name="#{_path}img1.png"/>
<h:graphicImage library="mylib" name="#{_path}img2.png"/>
<h:graphicImage library="mylib" name="#{_path}img3.png"/>
0 голосов
/ 28 октября 2011

Почему бы не использовать составной компонент.Тогда вам не нужно менять img1.png, img2.png, ... и т. Д. Везде, когда это изменится.Путь может быть указан как параметр.

...