eclipse - 如何调试 JSF/EL

标签 eclipse debugging jsf jsf-2 el

如何在JSF页面中调试EL?我想观察变量值、函数调用等。最好的解决方案是 Eclipse 插件,但任何其他可能性都比猜测“为什么这个表达式无法正确渲染?”更好。

最佳答案

在 JSF/Facelets 中您可以获得的最接近的结果是放置 <ui:debug /> View 中的某处:

<ui:debug />

CtrlShiftD 应显示一个弹出窗口,其中包含有关组件树以及所有可用请求参数和请求/ View 的调试信息/flash/session/application 作用域变量。它基本上代表了所有这些 map 的内容。

热键可以通过 hotkey 配置。属性,以便当它与浏览器默认热键冲突时您可以选择另一个,就像在 Firefox 中一样; CtrlShiftD 默认情况下会显示“添加书签”对话框。以下是如何让它监听 CtrlShiftX :

<ui:debug hotkey="x" />

您通常还想在非开发阶段隐藏它,因此添加这样的渲染条件:

<ui:debug hotkey="x" rendered="#{facesContext.application.projectStage == 'Development'}" />

在显示的调试信息中,提供的有关作用域变量的信息并不像您期望的那么好。它只显示 Object#toString()所有作用域变量的结果,默认为 com.example.Bean@hashcode 。您无法像在 Eclipse 调试器的调试 View 中那样直接探索它们的属性及其属性的值。您需要实现 toString()相应地,以便返回尽可能多的相关信息(如果需要,您甚至可以通过右键单击源代码 > 源 > 生成 toString() 让 Eclipse 自动生成它):

@Override
public String toString() {
    return String.format("Bean[prop1=%s,prop2=%s,prop3=%s]", prop1, prop2, prop3);
}

对于方法调用,按照通常的方式在Java源代码上打断点即可。当 EL 调用该方法时,Eclipse 也会启动。如果它是托管 bean,您也只能在 Eclipse 调试器中看到它的属性。

关于eclipse - 如何调试 JSF/EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8266953/

相关文章:

c# - 调试时,有没有办法判断一个对象是否是不同的实例?

jquery - 使用 jQuery 打开和关闭 richfaces 模式面板

eclipse - SVN 提交错误 "Commit can only commit to a single repository at a time."

java - 将 var javascript 转换为 java 变量

java - Google App Engine Java 无法运行应用程序 HTTP 500

ajax - 带有 RemoteCommand 的 PF Dialog 框架

jsf - 在构建或部署期间检查 Facelets 文件的完整性

java - 如何将 true 转换为 Boolean.TRUE?

c++ - 无法从我的 C++ 应用程序获得输出

python - 在 Python 包装器中调用外部 C 库时出现奇怪的内存损坏