对于一个web开发的初学者来说,想把所有的东西都用java代码写,这种想法是理所当然的但是在找了好多地方后,都没法找到一种最简单的方法使得值直接的传出。
下面分享一下我的解决方法吧。
目的,想用js的一个api jquery 做出一个对话框,对话框是用来发布通知的,当用户在对话框中将通知的内容填写完成后,将内容存到数据库中。
基本思路:①:获取对话框的内容,document.getElementsByName("");
②:在form表单如下:使用get是想在浏览器中看值是否传出,后期可改。SaveNotice是具体处理form表单的类。在这个类里,可以用request.getParameter("notice_save");得到隐含元素的值。
<form name="form1" method="get" action="http://localhost:8080/kxw_service/SaveNotice" >
<div id="dd">
<h3>content:</h3>
<textarea name="notice" rows="10" cols="52"></textarea><br/>
<h3>priority:</h3>
all:<input type="radio" name="level" value="0">
worker:<input type="radio" name="level" value="1">
</div>
<input type="hidden" name="notice_save">
<input type="button" value="发布新通知" οnclick="jQuery('#dd').dialog('open')">
</form>
在js中需要写的内容如下
<script type="text/javascript">
jQuery('#dd').dialog({
modal: true,
width: 350,
height: 300,
closed: true,
buttons:[{
text:'Ok',
iconCls:'icon-ok',
handler:function(){
var noticeToSave;
var notice_str=jQuery("textarea").val();//nice
var chkObjs = document.getElementsByName("level");
for(var i=0;i<chkObjs.length;i++){
if(chkObjs[i].checked){
noticeToSave=notice_str+","+chkObjs[i].value;
document.form1.notice_save.value=noticeToSave;//将通知的内容传给隐含元素
document.form1.submit();//提交表单
alert("通知发布成功。"
break;
}
}
}
},{
text:'Cancel',
handler:function(){
jQuery('#dd').dialog('close');
}
}]
});
function open(){
jQuery('#dd').dialog('open');
}
</script>
我使用的是jquery的一个插件easyui 做的对话框,所以需要引入相应的库。
简单总结一下思路。将对话框中的值保存在一个隐含元素中,然后通过提交表单的方式将表单中的值传出,具体在servlet配置的时候需要注意下。这种方式可以解决js传值到java的问题,里面还有很多小问题,在具体解决的时候再看吧。。。。。