javascript中如何获取jsf后台数据?
我想在页面初始化的时候调用ajax请求jsf的数据放在javascript中的一个数组对象中,比如有一个ManagedBean,在face-config.xml中配置名为...
我想在页面初始化的时候调用ajax请求jsf的数据放在javascript中的一个数组对象中,比如有一个ManagedBean,在face-config.xml中配置名为“manage”。现在我想请求ManagedBean中的一个方法来获取数据data,然后返回。我想知道我ajax请求的地址是什么?我想到一种方法,在页面上写一个隐藏的jsf标签commandlink,页面加载的时候我调用commandlink的action方法,然后调用后台数据返回,可是我ajax能获取到数据么?试了一下好像得不到。
展开
2个回答
展开全部
你的想法就错了,
1.ajax如果要调用后台Bean的方法,必须把jsf的viewstate也一并发送给后台,这样jsf才能恢复视图。所以用commandlink是不行的。
2.成功调用后台后,后台返回数据,你用ajax接收就可以了。
1.ajax如果要调用后台Bean的方法,必须把jsf的viewstate也一并发送给后台,这样jsf才能恢复视图。所以用commandlink是不行的。
2.成功调用后台后,后台返回数据,你用ajax接收就可以了。
追问
我就是想知道怎么调用啊 能细说么?
比如我用jquery的ajax方法,
$.ajax({
url:"",
type:"post",
success:function(data){
}
})
我想知道我的url怎么写,如果我写成form.action我怎么与我的后台方法关联咧?
追答
你可以这样试试,看直接用commandlink提交的时候,后台接收了哪些数据,然后把这些数据用ajax提交给后台,这样就可以调用后台的bean了
if (req) {
req.onreadystatechange=function() {
if (req.readyState==4){
if(req.status==200){
if(req.responseText == 0){
window.top.location.href=context+"/";
} else{
var returnArray = req.responseText.split(",");
document.getElementById("_idJsp0:tab1:allMoney").innerHTML = returnArray[0];
document.getElementById("_idJsp0:tab1:pocketMoney").innerHTML = returnArray[1];
document.getElementById("_idJsp0:tab1:deposit_kj").innerHTML = returnArray[2];
document.getElementById("_idJsp0:tab1:japanAllMoney").innerHTML = returnArray[3];
document.getElementById("_idJsp0:tab1:japanDeposit").innerHTML = returnArray[4];
document.getElementById("_idJsp0:tab1:abroadDeposit").innerHTML = returnArray[5];
}
}
else {
alert("エラー!!データ取得失敗しました。");
}
}
};
req.open('POST',context+"/account/user.jsf",true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send("_idJsp0:tab1:month="+month+"&ajax=t&_idJsp0_SUBMIT=1&_idJsp0:_link_hidden_&_idJsp0:_idJsp11_indexSubmit&_idJsp0:_idcl&javax.faces.ViewState="+document.getElementById("javax.faces.ViewState").value);
}
我这个没有用jquery,直接用的ajax,不过原理一样的,希望能给你参考作用
我提交了一个按钮,然后后台返回数据,动态刷新页面上指定区域
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询