微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从JSF访问Javascript变量

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

有可能在某种程度上这样做吗?我正在经历一些DWR的东西,它们会将JS发送给Java bean的ajax帖子,我可以使用JSF中的bean变量.但是,我想知道是否还有其他方法可以做到这一点.

我非常感谢任何帮助.我正在使用JSF 2.x顺便说一句.

谢谢,
S.

解决方法:

您可以使用以下“hack”来让JS向JSF提交信息.

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

<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>

在侦听器方法中执行Java / JSF作业:

private String input; // +getter +setter

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

将所需的JSF标记放在< h:someComponent id =“something”>它将由< f:ajax render =“重新呈现:”>当听众完成其工作时:

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

也就是说,我更喜欢在托管bean的构造函数或操作方法中而不是在JS中进行webservice调用.你的方法实际上是一个回旋处.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐