Bal*_*usC 69
最接近JSF/Facelets可以<ui:debug />在视图中放置一个地方:
<ui:debug />
Run Code Online (Sandbox Code Playgroud)
CtrlShiftD然后按下应显示一个弹出窗口,其中包含有关组件树和所有可用请求参数以及请求/视图/ flash /会话/应用程序作用域变量的调试信息.它基本上是所有这些地图内容的表示.
热键是按hotkey属性配置的方式,这样您可以选择另一个与浏览器默认热键冲突的方式,就像在Firefox中一样; CtrlShiftD默认情况下会显示添加书签对话框.以下是您可以如何进行聆听CtrlShiftX:
<ui:debug hotkey="x" />
Run Code Online (Sandbox Code Playgroud)
您通常也希望将其隐藏在非开发阶段,因此添加一个渲染条件:
<ui:debug hotkey="x" rendered="#{facesContext.application.projectStage == 'Development'}" />
Run Code Online (Sandbox Code Playgroud)
在显示的调试信息中,提供的有关范围变量的信息并不像您期望的那么好.它仅显示Object#toString()默认的所有范围变量的结果com.example.Bean@hashcode.您无法直接探索其属性及其属性的值,就像在Eclipse的调试器的调试视图中一样.您需要相应地toString()在类上实现,以便尽可能多地返回相关信息(如果需要,您甚至可以通过右键单击源代码> Source> Generate toString()来让Eclipse自动生成它:):
@Override
public String toString() {
return String.format("Bean[prop1=%s,prop2=%s,prop3=%s]", prop1, prop2, prop3);
}
Run Code Online (Sandbox Code Playgroud)
至于方法调用,只需按常规方式在Java源代码上放置一个断点.当EL调用该方法时,Eclipse也会在那里启动.如果它是托管bean,您还将在Eclipse调试器中看到它的属性.
小智 6
如果您确实遇到问题,那么如果您可以获得EL实现的源代码(对于RI来说足够简单),那么您可以使用Eclipse在EL实现方法中设置断点.你需要得到的EL代码是如何工作的理解,但它不是那个复杂.不是因为非常胆小的人.
另一种可能性是以编程方式创建和评估EL.有一些如何做到这一点的例子.然后,您可以使用调试器来解决表达式是什么以及结果是什么,直到您解决了问题所在.
| 归档时间: |
|
| 查看次数: |
37251 次 |
| 最近记录: |