如何通过Ajax刷新由JSF填充的JavaScript变量?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何通过Ajax刷新由JSF填充的JavaScript变量?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2269字,纯文字阅读大概需要4分钟。
内容图文
![如何通过Ajax刷新由JSF填充的JavaScript变量?](/upload/InfoBanner/zyjiaocheng/690/817fcf0b137a4150bde324eb85630cb4.jpg)
我要执行以下操作:
>从h:selectOneMenu中选择一项
>通过ajax用新值更新支持bean
>使用新值运行Javascript函数
不过,在下面的代码中,alert(#{backingBean.derivedValue})仍然包含上次更改的值(即,当我选择“ Two”时为0,当我选择“ One”时为4,依此类推):
<h:form>
<h:selectOneMenu value="#{backingBean.input1}">
<f:selectItem itemLabel="One" itemValue="1"/>
<f:selectItem itemLabel="Two" itemValue="2"/>
<f:ajax render="@form" onevent="function(data) { if (data.status === 'success') { alert(#{backingBean.derivedValue}) }}"/>
</h:selectOneMenu>
Input value: #{backingBean.input1}
Derived value: #{backingBean.derivedValue}
</h:form>
和后备豆:
@ManagedBean
@ViewScoped
public class BackingBean {
private int input1;
private int derivedValue;
public int getDerivedValue() {
return derivedValue;
}
public void setDerivedValue(int derivedValue) {
this.derivedValue = derivedValue;
}
public int getInput1() {
return input1;
}
public void setInput1(int input1) {
this.input1 = input1;
derivedValue = input1 * 2;
}
}
有没有办法做到这一点? (顺便说一句,我在该站点上阅读了无数线程,这些线程与JSF / ajax / javascript协同工作,但不是这个特定问题)
解决方法:
我成功实现了此答案中提出的解决方案Getting backing bean value with Javascript,该解决方案使用PrimeFace’s RequestContext在服务器端添加了Javascript回调参数.
这是我的Facelets页面:
<h:form>
<p:selectOneMenu value="#{backingBean.input1}">
<f:selectItem itemLabel="One" itemValue="1"/>
<f:selectItem itemLabel="Two" itemValue="2"/>
<p:ajax oncomplete="afterLoad(xhr, status, args)"/>
</p:selectOneMenu>
<h:outputScript>
function afterLoad(xhr, status, args) {
alert("Input * 2 = " + args.derived);
}
</h:outputScript>
</h:form>
这是我的后盾:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;
@ManagedBean
@ViewScoped
public class BackingBean {
private int input1;
private int derivedValue;
public int getDerivedValue() {
return derivedValue;
}
public void setDerivedValue(int derivedValue) {
this.derivedValue = derivedValue;
}
public int getInput1() {
return input1;
}
public void setInput1(int input1) {
this.input1 = input1;
derivedValue = input1 * 2;
RequestContext.getCurrentInstance().addCallbackParam("derived", derivedValue);
}
}
(我不知道这是否是集成JSF和D3的好方法.)
也可以看看
> Getting backing bean value with Javascript
内容总结
以上是互联网集市为您收集整理的如何通过Ajax刷新由JSF填充的JavaScript变量?全部内容,希望文章能够帮你解决如何通过Ajax刷新由JSF填充的JavaScript变量?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。