javascript - 从 JSF 访问 Javascript 变量

标签 javascript ajax json jsf javabeans

<分区>

我有一个 JSF 文件,需要从我通过 Ajax 调用 Web 服务获得的 JS 函数中获取的数据进行填充。后一部分就像一个魅力。我能够从 ajax 调用中检索 JSON 数据。我需要解析这个 json 数据并获取数据并使用它来填充 JSF。我不确定如何从 JSF/xhtml 访问 JS 变量。

是否有可能以某种方式做到这一点?我正在研究一些 DWR 内容,这些内容会将 ajax post 从 JS 发送到 Java bean,我可以使用 JSF 中的 bean 变量。但是,我想知道是否还有其他方法可以做到这一点。

如果有任何帮助,我将不胜感激。我正在使用 JSF 2.x 顺便说一句。

谢谢, S.

最佳答案

您可以使用以下“技巧”让 JS 向 JSF 提交信息。

使用 <f:ajax> 创建一个不可见的 JSF 表单钩子(Hook):

<h:form prependId="false" style="display:none;">
    <h:inputText id="input" value="#{bean.input}">
        <f:ajax event="change" execute="@form" listener="#{bean.process}" render=":something" />
    </h:inputText>
</h:form>

让JS更新输入框并触发change事件:

<script>
    function somefunction() {
        var input = document.getElementById('input');
        input.value = 'your JSON string';
        input.onchange();
    }
</script>

listener 中执行 Java/JSF 工作方法:

private String input; // +getter +setter

public void process(AjaxBehaviourEvent event) {
    doSomethingWith(input);
}

将所需的 JSF 标记放在 <h:someComponent id="something"> 中将由 <f:ajax render=":something"> 重新渲染当listener完成了它的工作:

<h:panelGroup id="something">
    The JSON string was: <h:outputText value="${bean.input}" />
</h:panelGroup>

也就是说,我更愿意在托管 bean 的构造函数或操作方法中而不是在 JS 中执行 web 服务调用。您的方法实际上是一种迂回。

关于javascript - 从 JSF 访问 Javascript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997885/

相关文章:

javascript - 修改json对象并更改mock数据

javascript - jquery - 对任何事件执行效果

javascript - 如何更新 _ids 数组中的所有 Mongo 文档?

javascript - 如何从异步类函数 JavaScript 返回 Promise

javascript - jQuery - 检测 contenteditable div 内的元素删除

java - jackson - 忽略蛇形 key 中的大小写

asp.net - 使用 ScriptManager.RegisterClientScriptResource 的真正优势是什么?

javascript - 更新前验证字段

javascript - AJAX 和数据格式问题

C# 将 JSON 写入不带反斜杠的文件