外部与内部 JS - MBean 值

External vs Internal JS - MBean value

当我的 javascript 位于外部文件中时,我无法从 MBean 获取值。

示例:

<script src='scripts/externaljs.js' type='text/javascript' />
<script>
   getString();
<script>

//externaljs.js

function getString(){
   var string = "#{testMBean.getName()}";
   alert(string);
}

它总是 returns "#{testMBean.getName()}" 而不是字符串值。 但是如果我在我的 .xhtml 文件中声明它 returns 正确的值。

<script>
   var string = "#{testMBean.getName()}";
   alert(string);
</script>

我是不是做错了什么?

这是因为您的 MBean 值仅在您的视图中被替换。如果您希望外部 JavaScript 文件看到这些值,您可以将它们存储在数组/对象中,或将它们作为参数传递。

<script>
  var mBeanValues = {
    string: "#{testMBean.getName()}"
  }
</script>

<script src="external.js></script>

<script>
  getString()
</script>

=====

// external.js
function getString() {
  alert(mBeanValues.string)
}

<script src="external.js"></script>

<script>
  getString("#{testMBean.getName()}")
</script>

=====

// external.js
function getString(string) {
  alert(string)
}