今天是做二期作业中的一天,今天我把所有的表都创建好,把每个表的增删查都已经做好了。在做改的时候出现了一点小问题。在一期的时候要修改某个数据的值,在后边的修改操作会把这行数据的ID传到一个操作JSP页面,在操作页面使用ID,进行修改这行数据。这次进行修改的时候,我不想再跳到一个页面进行修改,我想在当前页面弹出一个窗口进行修改。
关键的一点就是ID的传递。
一开始我想在一个页面进行数值传递,直接在页面上传就OK了么。在表的显示过程当中我用了EL表达式。EL在JSTL的配合下可以循环输入表的每一行。点击每一行的修改按钮,可以把该行的ID传到JS的一个变量中,然后在弹出的修改窗口中用EL表达式(JS变量控制索引)显示修改前的原值。但是我发现EL表达式怎么也接受不了JS的变量,我写的方式是这样的
'${requestScope.list['+id+'].user_name}' 但是无论单引号还是双引号都会发生错误,告诉我句子结构错误。我以为是我的字符串的拼接错误,然后我在百度上找了好长时间各种JS字符串拼接的方法,但是都没有起到效果。我尝试了各种方法,我觉得JS字符串也可以像python那样用个%传递变量的值,但是都是徒劳无功。后来我就改变策略,不使用了EL表达式了。我使用Java代码,我想用Java代码将JS变量传递。这时候我才发现一个重大问题,就是Java代码在JSP中不能使用JS变量。Java代码是工作在后台服务器中,JS代码是工作在前台显示当中,也就是说是JS可以使用后台传过来的Java的变量,而JAva怎么能使用JS变量呢??。EL表达式是简化Java代码,他的性质是Java代码相同的,也在后台工作。啊,原来我在死胡同中走了好长时间~
接下来我是这样想的,我直接用<a>的标签传给servlet需要的ID,然后servlet将需要修改的内容给传过来,然后再页面显示。但是如果修改按钮同时有弹窗函数和超链接的话,他会跳到超链接,即使是返回的相同页面,他的弹窗函数也不会执行,或者是执行了又超链接掩盖了。后来嘛,我使用ajax进行传递ID,这样页面很平稳的显示需要的修改内容。
有一点小的想法,就是在写web的时候,还是要分清每个量的工作区间,作用区间,没搞清楚的话老是走入死胡同。