如何使用后端bean方法获取CSS类

时间:2019-06-11 13:59:36

标签: javascript jsf primefaces

我需要基于<html><body>的CSS类执行一些后端方法。

要确定<html>标签是否具有CSS类名称"someClass",我使用了JQuery $("html").hasClass("someClass")。然后我将其包装在具有返回值的函数中

function hasSomeClass() {
    if ($("html").hasClass("someClass")) {
        return true;
    } else {
        return false;
    }
}

然后我通过以下方式在控制器中执行了函数 RequestContext.getCurrentInstance().execute("hasSomeClass();");。但 RequestContext.getCurrentInstance().execute()的返回类型(如果无效)。

问:如何将javascript函数的返回值发送到后端bean函数?

我可以考虑一些选项,但是我想直接将返回值作为参数传递给我的后端方法,而不是将这些替代方法传递给

  1. 使用全局javascript变量作为参数
  2. 使用隐藏的输入字段

编辑: 关于其他解决方案:

我也尝试过solution,但我不知道将remoteCommandFunctionName([{name: 'name1', value: 'value1'}, {name: 'name2', value: 'value2'}]);放在哪里。是否将其放在<script>标签中?是否用function包装?因为如果我System.out.println(name1);会收到null

我的怪异行为快速解决方法:

<h:body onload="hasSomeClass() ? #{controller.onDoSomething('true')} : #{Controller.onDoSomething('false')}" >返回truefalse相隔一毫秒,尽管<html>具有someClass

1 个答案:

答案 0 :(得分:0)

适用于我的用例的解决方案

<script>
function hasSomeClass() {
    if ($("html").hasClass("someClass")) {
        someFunc();
    } else {
        someOtherFunc();
    }
}
</script>

<h:body>
<p:remoteCommand name="someFunc" actionListener="#{controller.soSomething('true case')}"/>
<p:remoteCommand name="someOtherFunc" actionListener="#{controller.soSomething('false case')}"/>
</h:body>