首页 > 解决方案 > 为什么我不能直接将 Javascript 变量传递给 bean 方法?

问题描述

如何将 Javascript 变量(字符串)直接传递给 bean 方法?当我尝试以下操作时,它不起作用。

var dd = document.getElementById("j_idt2:ddcust");  
var customer = dd.options[dd.selectedIndex].value;

var credit = document.getElementById("j_idt2:credit");

credit.value = #{creditController.getCreditScore(customer)};

但是,如果我将字符串硬输入到方法调用中(见下文),它就可以工作。

var dd = document.getElementById("j_idt2:ddcust");  
var customer = dd.options[dd.selectedIndex].value;

var credit = document.getElementById("j_idt2:credit");

credit.value = #{creditController.getCreditScore("Bau GmbH")};

但我不想硬编码。我的错误在哪里?帮助将不胜感激!

标签: javascriptjsfmethodsparameter-passingjavabeans

解决方案


您不能这样做,因为 javascript 是在您的网络浏览器中评估的,而表达式语言表达式(如#{creditController.getCreditScore("Bau GmbH")};)正在服务器端评估,甚至javascript 发送到您的浏览器进行评估之前。

但是,您可以至少通过以下方式将 javascript 变量内容发送回服务器并将其分配给托管 bean 属性:

作为结论,您不会有一个干净的客户端,只有 javaScript 执行将 javascript 变量传递给 EL 表达式并将 EL 表达式返回值分配给 javascript varialbes,而无需对服务器进行任何回发操作。


推荐阅读