我需要基于<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函数?
我可以考虑一些选项,但是我想直接将返回值作为参数传递给我的后端方法,而不是将这些替代方法传递给
:编辑: 关于其他解决方案:
我也尝试过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')}" >
返回true
和false
相隔一毫秒,尽管<html>
具有someClass
。
答案 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>