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

时间:2013-01-06 08:06:37

标签: jsf jboss facelets

有没有办法在构建或部署过程中检查Facelets文件是否有错误?

我不是在寻找一种只根据模式验证Facelets文件的解决方案,而且还要验证EL表达式是否有效。例如,如果属性或方法的名称在EL表达式中拼写错误(例如Value=”#{controller.nme}”而不是value="#{controller.name}"),则只有在运行时测试期间才会发现这种情况。

我正在使用JBoss 7.1。

2 个答案:

答案 0 :(得分:4)

理论上,像WTP和JBosd工具这样的Eclipse插件可以做到这一点,但是到目前为止,这些插件只能在完整的IDE中工作,而不是作为Ant或Maven可以调用的单独命令行工具。

更糟糕的是,这些工具从未如此完美。他们总是报告大量的误报,并且作为经验法则,他们的验证算法通常会落后数年。当前版本的WTP可能只是几乎无法验证Java EE 5中的所有内容(可能它仍然缺少一些模糊的特性)。

因此,如果基于此验证失败了构建,则可能永远无法部署任何内容。即使在最精心编码和完全正确的Web应用程序中,WTP和JBoss工具也发现有必要向数百个或大型项目报告数千个警告和错误。这是恕我直言,完全没用依赖。

答案 1 :(得分:3)

这是一种鸡/蛋问题。正如您自己所说,许多EL表达式只能在运行时进行评估。

请记住,EL包含的不仅仅是简单的属性和方法名称,还有不同的隐式对象(paramsfacesContextsession等)可以在不同的上下文中使用,您也可以通过许多不同的方式添加自己的对象(其他Facelets模板,可以在faces-config中注册或不注册的bean,甚至是在视图中插入对象的普通Java代码)。

所有这些因素都会导致很难用这种类型的检查来构建工具。我认为最接近您想要的是使用JSFUnitArquillian为每个页面创建自己的JSF单元测试,并将它们集成到您的构建中。当您针对JBoss 7时,我认为这应该是可行的。