如何将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")};
但是我不想硬编码。我的错误在哪里?帮助将不胜感激!
答案 0 :(得分:0)
您不能用这种方式,因为在服务器端对表达式语言表达式(例如#{creditController.getCreditScore("Bau GmbH")};
)进行评估时,即使在之前发送到您的浏览器进行评估。
但是,您可以通过以下方式至少将javascript变量内容发送回服务器,并将其分配给托管bean属性:
使用隐藏的输入:How to pass JavaScript variables as parameters to JSF action method?
像这样使用Primefaces p:remoteCommand:Passing javascript variable to java bean
结论是,您将没有干净的客户端,只有javaScript执行将javascript变量传递给EL表达式并将EL表达式返回值分配给javascript varialbes,而无需对服务器执行任何回发操作。