当我尝试将参数从JSF传递到Javascript时,我有一个错误,我的参数是空的。
JSF 代码 :
<h:commandButton immediate="true" value="#{bundle.hello}"
onclick="return test('#{myBean.parameter1}', '#{myBean.parameter2}');"/>
脚本代码:
function test(parameter, parameter2){
html2canvas($('#body'), {
onrendered: function (canvas) {
var img = canvas.toDataURL("image/png");
var newImg = window.open(img);
newImg.document.write("<title>" + parameter+ " - " + parameter2+ "</title>");
}
});
return false;
}
我发现一些奇怪的东西,如果我删除函数中的"return false",参数就可以了。不幸的是,由于其他原因,我需要"返回假"。
你能解释一下我必须如何解决它吗?
谢谢。
EL(那些#{}
事物)在生成HTML输出期间运行,而不是在执行JavaScript代码期间运行。右键单击并在网络浏览器中查看源代码。你会知道的
onclick="return test('', '');"
触发 onclick 时,显然使用空参数调用test()
函数。我绝对没有看到如何将函数的返回值更改为 true
解决此问题。很可能您错误地识别了问题,并且只有在按下按钮两次而不是一次时,问题才会"修复"。
您需要以不同的方式解决此问题。一种方法是让JS直接获取HTML输入元素的值。例如
<h:form id="form">
<h:inputText id="input1" ... />
<h:inputText id="input2" ... />
<h:commandButton ... onclick="test(); return false;" />
</h:form>
跟
function test() {
var input1 = document.getElementById("form:input1").value;
var input2 = document.getElementById("form:input2").value;
// ...
}