明确一点:js中完全可以执行java,不同意的请反驳,页面先执行<%%>中的程序,将结果放在内存中,然后执行<html> function doJudge(){ var save = document.forms[1].save; <% Date date = new Date(); Calendar c = Calendar.getInstance(); c.setTime(date); int day = c.get(Calendar.DAY_OF_MONTH); int month=c.get(Calendar.MONTH)+2; int year = c.get(Calendar.YEAR); %>
var day = <clay:bean var="$constructSessionData.day" scope="session"/> var month = <clay:bean var="$constructSessionData.month" scope="session"/> var year = <clay:bean var="$constructSessionData.year" scope="session"/> if(month==<%=month%> && year==<%=year%>){ ifUse = true; }
var a= document.ak.newWL var b= document.ak.newNH; var c= document.ak.newNM; var f = "<clay:bean var="$canModify.status" scope="session"/>"; if(a.disabled && f==1 && ifUse){ a.disabled=false; b.disabled=false; c.disabled=false; } }
你要弄清楚本质
jsp代码绝对的是先执行的如果想达到你的那种效果,只能把这部分JSP的代码放到另外一个页面进行处理了
function save()
{
question = confirm("是否保存?");
if (question!="0")
{
iframe.src= "Fsave.jsp"; //转到iframe中
alert("会议结果已保存!");
return;
}
else{
return;
}
}
</script>Fsave.jsp 内容:
<% Hysave h= new Hysave();
h.save();
%>这样说不知道LZ明白吗?
<script language="JavaScript">
//功能:从数据库中一次性将所有数据取出来存在前台指定的数组中
//每次进入该页面,系统将自动执行该程序段一次
//针对下拉框中每个下拉框都具有不同数据
var countArray = new Array();
var textArray = new Array();
var valueArray = new Array();
<%
//连接数据库
BoundConnection bcon = (BoundConnection )session.getAttribute("bcon");
Connection conn = (Connection)bcon.getConnection();
Statement stmt_departmentJS = null;
ResultSet rs_departmentJS = null;
Statement stmt_tempUsersJS = null;
ResultSet rs_tempUsersJS = null;
int i = 0;
int j = 0;
int departmentID = 0;
int tempUserID = 0;
String tempUserName = "";
//获取数据一
stmt_departmentJS = conn.createStatement();
rs_departmentJS = stmt_departmentJS.executeQuery("select * from department order by id asc");
while(rs_departmentJS.next()){
departmentID = rs_departmentJS.getInt("id");
%>
textArray["<%=i%>"] = new Array();
valueArray["<%=i%>"] = new Array();
<%
//获取数据二
stmt_tempUsersJS = conn.createStatement();
rs_tempUsersJS = stmt_tempUsersJS.executeQuery("select * from user where department_id = '" + departmentID + "'");
j = 0;
while(rs_tempUsersJS.next()){
tempUserID = rs_tempUsersJS.getInt("id");
tempUserName = rs_tempUsersJS.getString("username");
%>
textArray["<%=i%>"]["<%=j%>"] = "<%=tempUserName%>";
valueArray["<%=i%>"]["<%=j%>"] = "<%=tempUserID%>";
<%
j++;
}
%>
//某个部门所拥有用户的数量
countArray["<%=i%>"]="<%=j%>";
<%
i++;
}
%>
</script>
抓住一点,就是 jsp 来控制 javascript的代码生成就可以了!
我觉得我的回答没问题哈~~~~~
而且我确实也实现了在JAVASCRIPT中嵌套JAVA代码哈~~~~~~~
呵呵~~~~~~~~
我试了一下你的方法后
点确定后
结果ie弹出错误对话框:“出现运行期错误,iframe未定义”无法运行了
是不是说这样的代码只能在服务器端执行??在客户端是执行不了的??
<% Hysave h= new Hysave();
h.save();
%>
起不了约束作用,js对于jsp来说是静态文本,只是字符串,不是代码
楼主可以在确定保存后转到一个jsp或者servlet中去保存,现在的程序不能实现保存!<script language="JavaScript" type="text/JavaScript">
function save()
{
question = confirm("是否保存?");
if (question!="0")
{
window.location="savejs.jsp?v="+v+"&V2="+v2;
alert("会议结果已保存!");
return;
}
else{
return;
}
}
</script>
function doJudge(){
var save = document.forms[1].save;
<%
Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DAY_OF_MONTH);
int month=c.get(Calendar.MONTH)+2;
int year = c.get(Calendar.YEAR); %>
var day = <clay:bean var="$constructSessionData.day" scope="session"/>
var month = <clay:bean var="$constructSessionData.month" scope="session"/>
var year = <clay:bean var="$constructSessionData.year" scope="session"/>
if(month==<%=month%> && year==<%=year%>){
ifUse = true;
}
ifUse = true;
if(ifUse)
{
save.disabled=false;
del.disabled=false;
}
var a= document.ak.newWL
var b= document.ak.newNH;
var c= document.ak.newNM;
var f = "<clay:bean var="$canModify.status" scope="session"/>";
if(a.disabled && f==1 && ifUse){
a.disabled=false;
b.disabled=false;
c.disabled=false;
}
}