日期:2014-05-17  浏览次数:20772 次

JS调用JAVA的问题
在WEB界面里,有个“保存”按钮,执行set操作
在set函数里:
function set()
{
      <%
           List<T_lottery> list = T_lottery.getT_lottery();
           for(int i=0;i<list.size();i++)
           {}
      %>
}
问题是:
在打开这个界面的时候,就会执行这个list一行代码,然后在界面上点击“保存”按钮的时候,就不去执行list这行代码了。
现在我想在点击“保存”按钮的时候,先执行list这行代码,我改如何操作呢?
希望大家能多多帮忙!谢谢,最好能些个代码,帮忙解释下,非常感谢了!
java JS list

------解决方案--------------------
不可行,所谓的jsp页面,在响应请求之后已经被编译为servlet文件了。针对%内代码的编译一定是在页面响应之前的。
最后用户浏览器接收到的只是编译过的html文本而已。
------解决方案--------------------
JS在客户端运行,JSP代码在服务器运行,能执行到一块?
------解决方案--------------------
js调用java是可以的,但两种代码不能混在一起写,必须分开,请看代码:
RoleAjax.java

/**
 * 角色ajax
 * @version 1.0
 */
@AjaxBean(name = "roleAjax")
public class RoleAjax extends BaseAjax {

/**
 * 设置权限
 * @param id 角色ID
 * @param menuIds 菜单id
 * @return String
 */
@AjaxMethod
public String menu(Long id, String menuIds) {
try {// 逻辑代码就不贴了
System.out.println("角色ID:" + id + "        菜单id:" + menuIds);
return "操作成功!";
} catch (Exception e) {
e.printStackTrace();
}
return "操作失败!";
}

}


role_menu.jsp

<script type="text/javascript" src="<m:contextPath/>/mvc/framework/res/js/public.js.php"></script>
  <script type="text/javascript" src="<m:contextPath/>/mvc/framework/ajax/roleAjax.js.php"></script>
  <script type="text/javascript">
function doMenu() {
        // 用js直接调用java类的方法,传入相应的参数,最后一个参数为回调函数
        // roleAjax就是那个java类的注解,实际上已经在页面产生了一个js对象
roleAjax.menu(1, "23,25,36,48", function(result) {
alert(result);// 这个结果就是java方法的返回值
});
}
  </script>

------解决方案--------------------
你也可以用dwr ,
我这有两个demo
http://download.csdn.net/detail/zuxianghuang/4158486
------解决方案--------------------
如果需要的是你的list里的内容在客户端js可用,可以将其中的数据保存在一个json格式的string里,在显示页面时将此json付给一个js端变量,之后在js端就可以用了
------解决方案--------------------
理解错了,这种情况需要访问一个url地址,把值传过来