在构建或部署过程中是否有任何方法来检查您的Facelets文件中的错误?
我不是在寻找一种解决方案,它将简单地根据其模式验证Facelets文件,但也要验证EL表达式是有效的。例如,如果属性或方法的名称在EL表达式中拼写错误(例如:Value=”#{controller.nme}”
而不是value="#{controller.name}"
),这将仅在运行时测试时发现。
我使用的是JBoss 7.1.
理论上,像WTP和JBosd工具这样的Eclipse插件可以做到这一点,但到目前为止,这些插件只能在完整的IDE中工作,而不能作为单独的命令行工具被Ant或Maven调用。
更糟的是,这些工具从来都不是完美的。他们总是报告大量的误报,而且根据经验,他们的验证算法通常落后多年。当前版本的WTP可能只是勉强验证了Java EE 5中的所有内容(也许它仍然遗漏了一些模糊的功能)。
因此,如果基于此验证的构建失败,则可能永远无法部署任何内容。即使是在最仔细编码和完全正确的web应用程序中,WTP和JBoss工具发现有必要报告数百个或在大型项目中数千个警告和错误。在我看来,依靠它是完全没用的。这是一个先有鸡还是先有蛋的问题。正如您自己所说,许多EL表达式只能在运行时求值。
请记住,EL包含的不仅仅是简单的属性和方法名称,它有不同的隐式对象(params
, facesContext
, session
等),这些对象可以在不同的上下文中使用,你也可以通过许多不同的方式添加自己的对象(其他Facelets模板,bean可能会或可能不会在faces-config中注册,甚至普通Java代码在视图中插入对象)。
所有这些都使得为您构建具有这种类型检查的工具变得非常困难。我认为最接近您想要的是使用JSFUnit和Arquillian为每个页面创建您自己的JSF单元测试,并将它们集成到您的构建中。由于您的目标是JBoss 7,我认为这应该是可行的。