JSF中如何写js代码提交到JSF的管理Bean的一个方法中
请问在JSF中如何写js代码提交到JSF的管理Bean的一个方法中
faces-config.xml代码片段
[code="xml"]
loginAction
com.test.action.login.LoginAction
request
[/code]
java代码片段
[code="java"]
public class LoginAction {
public String sayHello() {
System.out.println("hello");
return "main";
}
}
[/code]
jsp代码片段
[code="html"]
/h:form
[/code]
js代码片段
[code="js"]
function sayHello(){
[color=red]请问这里应该如何让上面的提交到LoginAction.sayHello()中[/color]}
[/code]
先感谢大牛了!
JSF判断用户点击的哪个Command组件是根据请求参数中包含的command组件的ID判断的,如果你的form的id 为myform,你的commandButton为mybutton,那么一旦你的request中包含参数名为myform:mybutton的参数(参数值随便取),JSF就会执行拥有这个ID的Command组件绑定的Action方法。
我一般用jquery的form插件通过ajax提交form,同时在请求参数中追加上我想触发的Action绑定在页面中的组件的id,这个效果和普通的点击页面上的Command组件是一样的,不过通过jquery实现了异步提交form并触发后台某个Action方法,好处就是你可以把这个过程通过js注册到页面上任何元素上
例如:
function save(isShowState,isValidate){
$.blockUI('',{border: '0px',filter: 'alpha(opacity=50)'});
var result = false;
var options = {
type: 'GET',
data: {'[color=red]infoForm:saveButton[/color]': 'ajaxSaveButton'},
success: successCallBack,
cache: false,
async: false,
error: function(){
alert('保存过程中发生未知错误!');
}
}
if(isValidate){//需要校验
options.beforeSubmit = infoFormOnSubmit;
}
$('#infoForm').ajaxSubmit(options);
function successCallBack(){
result = true;
if(isShowState){
alert('基本信息保存成功!');
}
}
$.unblockUI();
return result;
}
[code="jsp"]
type="button" onclick="sayHello()"/>
/h:form
[/code]
注意form,button都加了id
[code="js"]
function sayHello(){
document.getElementById("frm:btn").click();
}
[/code]