参数为 EMPTY 使用 JSF/Javascript



当我尝试将参数从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;
    // ...
}

最新更新