为什么不能将Javascript变量直接传递给bean方法?

时间:2018-11-29 14:25:19

标签: javascript jsf methods parameter-passing javabeans

如何将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")};

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

1 个答案:

答案 0 :(得分:0)

您不能用这种方式,因为在服务器端对表达式语言表达式(例如#{creditController.getCreditScore("Bau GmbH")};)进行评估时,即使在之前发送到您的浏览器进行评估。

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

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