【问题标题】:Refactor EL expressions in JSPs在 JSP 中重构 EL 表达式
【发布时间】:2012-01-26 14:17:39
【问题描述】:

我有许多带有${foo.bar.baz.phleem1}${foo.bar.baz.phleem2} 等形式的EL 表达式的JSP 文件(前两个或三个段相等)。为了减少 EL 查找,我正在重构这些页面:

来源:

<c:out value="${foo.bar.baz.phleem1}" />
<c:out value="${foo.bar.baz.phleem2}" />
<c:out value="${foo.bar.baz.phleem3}" />

重构后:

<c:set var="baz" value="${foo.bar.baz}" />
<c:out value="${baz.phleem1}" />
<c:out value="${baz.phleem2}" />
<c:out value="${baz.phleem3}" />

我知道我可以通过搜索/替换来完成大部分操作,但感觉不安全,因为它忽略了代码结构。

在 Eclipse 或 IntelliJ Idea 中是否支持这种类型的重构?

【问题讨论】:

  • 据我所知,不在 Eclipse 中。但是,在 Eclipse 中,您可以并排预览搜索和替换结果,并在应用之前取消勾选列表中的不正确匹配项。
  • 我已经检查过了。 IDEA 11.0.1 也不支持这种重构。
  • 我也是。否则我不会问。
  • 更新了我所做的。

标签: java eclipse jsp refactoring intellij-idea


【解决方案1】:

也许你可以在 emacs 中使用 nxml-mode。 (我没有测试过) 有一些函数,如 nxml-up-element。我打赌你可以创建一个强大的宏。但我认为更容易 grep 代码并手动执行。

【讨论】:

  • 哈哈哈,疯狂的 emacs 建议 +1
  • 主要问题是我们的 JSP 不是格式良好的 XML。否则我会自己开发一些基于 XML 的工具。
【解决方案2】:

是的。您可以使用正则表达式在 Eclipse 中使用占位符并进行相应更改。

参考以下 URL 获取 eclipse 中的正则表达式 http://www.eclipse.org/tptp/home/downloads/installguide/gla_42/ref/rregexp.html

单击搜索 [ Ctrl+H ],检查正则表达式选项和文件模式到 jsp。

按 Ctrl+空格键进行内容辅助。

单击搜索匹配,替换以一次性替换所有匹配的字符串。您可以使用正则表达式组来替换内容

【讨论】:

  • OP 很清楚这一点:“我知道我可以通过搜索/替换来完成大部分工作,但是因为它忽略了代码结构,所以感觉不安全。” OP 更多通过 Alt+Shift+L 寻找与普通 Java 源代码相同的重构功能。
  • 这个答案并没有真正说明如何执行 OP 的要求,只是他可以用来拼凑自己的解决方案,这可能不等同于“提取变量”操作.
  • 我用同样的方法实现了包重命名,单次处理了大约 350 个 java 文件 :) !我觉得使用正则表达式组可能会有所帮助:)
  • @BalusC 完全正确。仍然:为他的努力 +1 海报
  • @Ratna:Java 源文件中的包/类/方法/变量重命名可以在 Eclipse 中通过 Alt+Shift+R 完成。 Search&Replace 不够可靠。更重要的是,包重命名也可以通过在 Eclipse 项目资源管理器中的包上按 F2 来完成。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2011-09-09
  • 1970-01-01
  • 2011-03-10
相关资源
最近更新 更多