EL表达式选择错误的方法

时间:2015-12-07 11:35:30

标签: java java-7 el java-ee-6 jboss-eap-6

我们有一个在JDK 7和JBoss EAP 6上运行的Java EE 6 JSF项目。

我们在消息包周围有一个很好的类,我们有两个方法具有相同的名称,但不同的参数和使用varargs:

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<style>
  .btn {
    padding: 14px 24px;
    border: 0 none;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
  }
  .btn:focus,
  .btn:active:focus {
    outline: 0 none;
  }
  .btn-primary {
    background: #d5e14d;
    color: #fff;
    border-radius: 0;
  }
  .btn-primary:hover {
    background: #d5e14d;
  }
</style>
<button class="btn btn-primary"><i class="fa fa-instagram"></i> Instagram</button>

在XHTML页面的EL表达式中使用这些方法时,我们会遇到奇怪的行为,即应用程序在客户测试环境(Linux,JDK 7 Update 91)中生成NPE,但不在我们的(Windows,JDK 7)中更新80)并且经过深入挖掘后发现,由于选择了错误的方法,它发生在JBoss EL API的public void doSomething(String name) {..} public void doSomething(String name, Object... params) {..} 范围内 - 尽管事实上只有1个参数在EL表达。

我们还没有检查除了上面提到的两个测试环境之间的确切区别,当然通过重命名其中一个方法很容易解决 - 但是有没有人经历过这种行为并且可以告诉我它为什么会发生?

0 个答案:

没有答案