将页面中的常见字符串值重构为某些 EL 常量

发布于 2024-12-12 13:39:54 字数 770 浏览 0 评论 0原文

在 JSF 组件中,将常见常量(例如 标记中的名称/路径“重构”为单个本地临时属性的最佳方法是什么?

<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>

In a JSF component what is the best way to "refactor" common constants, e.g. names/paths in a <h:graphicImage> tag to a single local, temporary property?

<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>

should be

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

○愚か者の日 2024-12-19 13:39:54

使用 ;关于应用范围。这基本上将变量存储在 应用程序映射中

<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" 不与现有托管 Bean 名称或隐式 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"/>

Use <c:set> on application scope. This basically stores the variable in the application map.

<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"/>

Make sure that the var="path" doesn't conflict with existing managed bean names or implicit EL variables and such. You could if necessary use a convention to prefix it with _.

<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"/>
红衣飘飘貌似仙 2024-12-19 13:39:54

为什么不使用复合组件。然后,当发生变化时,您不必到处更改 img1.png、img2.png 等。该路径可以作为参数提供。

Why not using a composite component. Then you don't have to change the img1.png, img2.png, ... etc all over the place when that changes. The path can the be supplied as a parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文