JSF中如何写js代码提交到JSF的管理Bean的一个方法中
悬赏:10 发布时间:2008-06-23 提问人:tony.zou (初级程序员)
请问在JSF中如何写js代码提交到JSF的管理Bean的一个方法中
faces-config.xml代码片段
java代码片段
jsp代码片段
js代码片段
先感谢大牛了!
faces-config.xml代码片段
<managed-bean>
<managed-bean-name>loginAction</managed-bean-name>
<managed-bean-class>
com.test.action.login.LoginAction
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
java代码片段
public class LoginAction {
public String sayHello() {
System.out.println("hello");
return "main";
}
}
jsp代码片段
<h:form>
<h:commandButton action="#{loginAction.sayHello} type="button" onclick="sayHello()"/>
</h:form>
js代码片段
function sayHello(){
请问这里应该如何让上面的<h:commandButton>提交到LoginAction.sayHello()中}
先感谢大牛了!
采纳的答案
2008-06-23 jones (中级程序员)
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('<img src="images/loading.gif" />',{border: '0px',filter: 'alpha(opacity=50)'});
var result = false;
var options = {
type: 'GET',
data: {'infoForm:saveButton': '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;
}
我一般用jquery的form插件通过ajax提交form,同时在请求参数中追加上我想触发的Action绑定在页面中的组件的id,这个效果和普通的点击页面上的Command组件是一样的,不过通过jquery实现了异步提交form并触发后台某个Action方法,好处就是你可以把这个过程通过js注册到页面上任何元素上
例如:
function save(isShowState,isValidate){
$.blockUI('<img src="images/loading.gif" />',{border: '0px',filter: 'alpha(opacity=50)'});
var result = false;
var options = {
type: 'GET',
data: {'infoForm:saveButton': '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;
}
提问者对于答案的评价:
不好意思!前段时间一直没有上网!到今天才结贴,sorry!
其他回答
<h:form id="frm" >
<h:commandButton id="btn" action="#{loginAction.sayHello} <SPAN style="COLOR: red">type="button"</SPAN> onclick="sayHello()"/>
</h:form>
注意form,button都加了id
function sayHello(){
document.getElementById("frm:btn").click();
}
careprad (初级程序员) 2008-06-25




