5月8号到交通局搭载新修改过的系统,7号做了一天的修改,主要是在ISO前台表的一些字段长度不够,比如需要输入大量字符的字段只有20-30个字符可输入,这样就需要修改,见下图示例。通过一遍检查,找出这样的表。
1.在后台数据库中修改相应字段的长度。
2.在前台的jsp页面中重新设置最长长度,其为在空白空间中可输入的最长字符数。可以将此数值设置得比数据库表中的字段长度短一些这样可以避免可能的错误。
===============================================================================================================================
=================================================================================================================================
===============================================================================================================================
在交通局重新装载系统的时候,因为其主机上只有Tomcat服务器,并没有MyEclipse编程环境,故在MyEclipse下拷贝的源代码是非经过编译的,在src包中的类还存在,而在Tomcat的App文件夹中直接是可发布的代码,故需要在MyEclipse的项目目录中找到对应的文件夹,其Deploy选项中可找到相应的路径,然后直接覆盖源代码即可。如下图。
=============================================================================================================================
===========================================================================================================================
后来交通局的人员给出了新的修改意见,共有4个地方要改,我要改一下多媒体库的分类显示。主要想达到下面的效果:
===================================================================================================================
=================================================================================================================
最初的想法是达到动态,就是鼠标选择后在页面中立即显示出相应库中的文件,这需要分清楚文件的类型,因为文件都存储在同一个数据库表中,我参考了一下下面页面中上传时对文件的分类,上传分类的代码如下:
===============================================================================================================================
==============================================================================================================================
其中用到了selectOneRadio标签,而且用file_media类中的state来标识文件的类型,于是我在网上找了一下下拉列表的标签,参考上一个搜索的动态按钮,用到了Ajax技术,代码如下:
=============================================================================================================================
============================================================================================================================
用到了<a4j:support>其中的reRender属性定义我们的页面的哪一部分被更新,是下面id为dt和fenye的区域部分。actionListener为“方法绑定,当该组件被ajax请求激活时,将调用该监听器方法处理该事件。该方法必须为public的并且接受一个 AjaxEvent 参数,返回void。”开始的时候我在selectOneMenu框的value中用到的是已有的state变量,在javabean文件media_wjgl.File_bg中主要对其操作的是一个参数为空的loadResult函数,而actionListener的函数需要一个参数,我于是另写了一个pick函数,主要部分和loadResult一样,需要一些sql语句,但是其有一个参数ActionEvent e。
上图中的newmediaItems也是用到了原来的参数mediaItems,定义的是一个数组:
===============================================================================
===============================================================================
但是原有的静态数组中没有包含三种类型的“所有库”,所以要在value中的第一列新加一行<f:selectItem itemValue="all" itemLabel="所有库"/>,这样基本的功能就实现了,但是在实际的测试过程中,有一个问题困扰了我很久。就是每次装入页面时分类库的下拉框默认值总是“文档库”,对此不论我在jsp那段代码中做怎样的操作,都是一样的结果,我猜想到可能是最开始有对state值的设定,在下面段代码中确实有默认的“文档库”按钮,后来在配置文件faces-config.xml中确实有对state的初始值设定为docu:
================================================================================
===============================================================================
后来把value改为all就好了,就此以为都改好了。但是在同学改好页面上传的问题后,在比如传一个文档到图片库时出现错误提示,此时把state就设定到了图片库,但是此时显示的内容还是所有库的内容,经同学的提醒,在做这个组件时最好重新定义一个变量来表示,这样在页面内的state值就不会相互干扰,只要按照原来的state方法重新为变量设定方法,按照这种思路我重新定义了一个newstate方法,但是出现了新的问题,在jsp页面中会说找不到新定义的newstate或是newmediaItems,这种问题经同学的提醒,后来知道是set和get函数的定义有问题,java的初始化设置函数set和get函数,需要在get和set后的第一个字母大写,并且变量的其他部分不变,如下:
===============================================================================
===================================================================================
至此所有的问题才总算结束。
所以在一起做项目修改代码的时候,原有的变量尽量不要修改,要添加东西功能最好新定义变量。
今天5月15日,前几天交通局又要修改一些内容,记录一下修改的两部分:
1.在登录页面的左侧树形结构中要有向左收缩的按钮,达到下面的效果
需要在ltree.jsp中加入一段代码:
2.在多媒体部分的交通局文件夹需要有一个文件能显示出交通局中上传的所有文件,做到这一点不是太困难,主要是跟踪一下页面的显示流程,在后台的数据表iso_m_department中加入内部文件一项,其标号为交通局下的文件,然后再在jsp页面上做出一些调整以显示出“上传对象”和“所属部门”两项。
为了显示出所属部分,需要查询两个表:iso_m_department和media_info,通过一条sql语句把字段显示出来,我在网上查了段时间才找到合适的语句:
sql="select media_id,media_name ,to_char(up_date,'YYYY-MM-DD')as scrq,suffix,media_title,media_keywords ,owen_name,iso_m_department.dept_name as dept_name from media_info,iso_m_department where media_info.dept_id = iso_m_department.dept_id ";