在我们的Web应用程序中,我们对Java bean进行了一些重构,并且由于这种重构,一些动作/吸气剂不再可用。例如,在下面的示例中:
public class MyBean implements Serializable {
// Old name
// public String getFoo() { return "foo"; }
// New name
public String getBar() { return "bar"; }
}
如果我的JSF代码看起来仍然像:
<h:inputText value="#{myBean.foo}" .../>
然后它将生成一个异常。
我主要关心的是,一些EL表达式现在可能指向Java bean上不存在的方法,而当我浏览适当的页面时,我只能看到它。当EL表达式位于一个由Ajax在特定条件下呈现和/或重新呈现的部分时,情况变得更加困难。
所以我的问题是如何静态地检查这些EL表达式的正确性?
我查过了
JSFUnit
工具,因为它提供了这样的实用程序。所以我尝试
this example
但它似乎不像预期的那样工作。在一个简单的测试页面上,只有很少的EL表达式(一些是正确的,一些是不存在的bean和/或方法错误的),测试成功了,这是不正确的。
一个非常重要的注意事项:我的bean是在我的Spring配置中定义的,并且
不
在
faces-config.xml
.
还要注意,我只需要检查EL表达式是否引用了现有的bean和方法,而不一定要正确执行这个操作…
技术信息:
Java 1.6,Spring 2.5,JSF 1.2,
EL Functor
,facelets和richfaces 3.3