我想知道,如何在 jsf/primefaces 和 javascript 之间建立连接。
我想在用户键入空格后在我的支持 bean 中调用一个监听器。 为了确定按下了哪个键,我得到了一个 javascript 函数
<script type="text/javascript">
function displayunicode(e){
var unicode=e.keyCode? e.keyCode : e.charCode
return unicode
}
</script>
如果按下“空格”,则“unicode”的值为 32。
现在我使用“onkeyup 事件”从 primefaces 组件调用此函数
<h:form>
...
<p:inputTextarea id="inputBeschreibung"
value="#{bean.value}"
rows="10"
cols="50"
queryDelay="300"
maxlength="500"
onkeyup="displayunicode(event); this.select()">
</p:inputTextarea>
...
</h:form>
我不想在我的 primefaces 组件中使用这样的东西:
if(displayunicode(event); == 32) callBacking bean 方法。
我不知道该怎么做。
最佳答案
从 JavaScript 到 bean
要从 JavaScript 触发支持 bean 方法,您可以使用 p:remoteCommand 组件:https://www.primefaces.org/showcase/ui/ajax/remoteCommand.xhtml
这是来自 PrimeFaces user's guide 的示例:
<p:remoteCommand name="increment" actionListener="#{counter.increment}"
out="count" />
<h:outputText id="count" value="#{counter.count}" />
<script type="text/javascript">
function customfunction() {
increment(); //makes a remote call
}
</script>
从bean到JavaScript
如果您想要相反的操作,您可以使用 org.primefaces.context.RequestContext 类中的 execute(...) 方法:
RequestContext context = RequestContext.getCurrentInstance();
context.execute("alert('hello from bean');");
关于javascript - 在 jsf/primefaces 组件中评估 javascript 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789476/