随着我的JSF项目的发展,我已将文件组织成片段和模板。此外,一些代码段具有模板片段,以便可以进一步重复使用。然而,这使得找出哪些片段用于组成单个页面有点困难(并且与Java代码不同.Netbeans不能像在Java方法之间那样从模板跳转到模板与“转到源/实现”等)。 。
是否有调试工具可以帮助查看用于构成当前页面的片段?理想情况下,我要找的是与Visual Event for jQuery
类似的东西如果不存在此类工具,请让我解释一下我目前正在做什么,看看它是否可以改进。首先,我捕获一个调试查询参数,以便我可以打开和关闭。然后,在每个代码段中,我都有以下代码段:
<ui:fragment rendered="#{authController.debug}">
<div style="background:red">
From siteTemplate.xhtml
</div>
</ui:fragment>
显然,这远非理想,因为我必须在每个片段中键入片段文件名。如果我能做到这一点会好得多:
<ui:fragment rendered="#{authController.debug}">
<div style="background:red">
#{Current_File_Name}}
</div>
</ui:fragment>
PS:Django有一个很棒的调试工具栏,显示所使用的模板,发出的SQL用于生成当前页面。 http://www.packtpub.com/article/django-debug-toolbar有类似的东西吗?我见过的最好的是FacesTrace,但是开发似乎已经停滞不前了。
答案 0 :(得分:2)
三种可能性: 1)Chrome有一个出色的调试器/控制台,您应该能够轻松地通过ID进行跟踪(这就是我为模板/组件所做的工作)。
2)如果您没有运行Richfaces或繁重的JQuery实现,您可以查看Primefaces中的“log”。它可以很好地显示事件的进展情况,因此您可以很好地了解正在发生的事情。
3)使用复合组件而不是片段 - 这是我切换到的,因为它们是“库”,所以更容易管理和重用。堆栈跟踪通常显示非常详细的错误。
在上面的示例中,而不是:
<ui:fragment rendered="#{authController.debug}">
<div style="background:red">
#{Current_File_Name}}
</div>
</ui:fragment>
我可能会有一个“我的:redDiv”库
<composite:interface>
<composite:attribute name="value" type="java.lang.String"/>
</composite:interface>
<composite:implementation>
<div style="background:red">
#{cc.attrs.value}
</div>
</composite:implementation>
我意识到你并没有尝试创建一个红色框,但是这个组件可以在更大的过程中使用如下:
<html
...
xmlns:mine="http://java.sun.com/jsf/composite/mine"
>
...
<mine:redDiv value="Hello World"/>
...
</html>
此模式完全消除了“Snippet”导入方法,将其替换为可重用组件。将我的项目转换为此模式会将代码库减少约50%,并且现在可以轻松维护它。作为参考,它是一个具有非常“有状态”方法的中型项目,这意味着SessionScope和ViewScope是bean的主要范围,它基本上是一个CRUD应用程序。
很难说你在这个例子中做了什么,但我的猜测是你有很多文件而且让人感到困惑。复合组件基本上提供了一种解决此问题的方法,使重用变得更容易。
回应您对Netbeans和以下代码的评论:如果您不依赖于IDE,Eclipse Web Tools确实从ctrl-click
和html -> java
进行了html -> html
导航,这非常有用。主要是它评估表达语言和链接,但如果你有一些意大利面,这是一个节省时间。