问题1:
从数据库查到了年级,教材版本,科目。如何判断operation选了哪个?
<select name="grade">
<%
String sqlPlus3 = “从表中查询年级的字段”;
Vector<String[]> vv3 = DB.getMessage(sqlPlus3);//获取所有字段
for(int i=0;i<vv3.size();i++){
String[] str = vv3.get(i);//得到sql查询的字段
%>
<option value="<%=str[0]%>"><%=str[0] %></option>
</select>
思路:把选中的字段,放到option的value中,通过select标签的name访问所选的字段名称。
然后在ActionServlet.java里面:
request.getParameter("grade")获得。
问题2:
过滤器:没找到类的异常
原因是:该项目工程的web.xml的配置中 <filter-class>,找不到对应路径的类。原来,LogFilter.java的包为com.zh.servlet,而web.xml没有填写完整路径,补之即可。
<filter>
<filter-name>LogFilter</filter-name>
<filter-class>com.zh.servlet.LogFilter</filter-class> //补充.java的包名
<init-param>
<param-name>test-param</param-name>
<param-value>Initialization Paramter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
问题3:
对于Myeclipse中引入jQuery后有的文件出现multiple markers at this line - missing semicolon错误的解决
原因是myeclise9之后的版本的验证规则与jQuery的冲突,但实际上并不影响开发者正常使用,所以只要取消验证即可。
步骤为:右键->myeclise-> Exclude From Validation
问题4:
【项目加上过滤器后,依然出现乱码】
过滤器代码:
public class EncodingFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
String encoding = filterConfig.getServletContext().getInitParameter("encoding");
System.out.println("EncodingFilter:"+encoding);///
arg0.setCharacterEncoding(encoding);
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.filterConfig = arg0;//在web.xml里面读
}
private FilterConfig filterConfig = null;
}<strong>
</strong>
web.xml
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.zh.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
代码都没问题,原因是因为
缓存:之前的乱码覆盖了现在的页面。
/*********************************************************大三下*************************************************************************/
问题5:
今天整合界面出现了问题,main部分不能正常显示,sidebar和navicat可以正常显示。
查看F12发现navicat的部分把sidebar和main部分包住了,才导致main部分不能正常显示。
原因探究:少了一个nav 标签的 结束标签。
问题6:
Error instantiating servlet class cn.edu.fjnu.analysis.servlet.question_admin.DifficultyQuestionReviewServlet
有位网友的答复为:
我遇到这样的错,是因为,没有在工程的WEB-INF目录中,没有生成classes,会报这样的错误。解决方法:project->properties->java build path->source->src,将Default output folder设置为[项目名]/WebRoot/WEB-INF/classes,点击OK。
原因探究:因为yc同步svn时把.classpath(保存的是项目所用的外部引用包的路径)也传上去了,下载新版本代码后不能成功运行,是因为在他的项目引了几个支持json包,而我本地没有对于的jar包。删除那几个错误的引用即可。
知识补充:
.classpath保存的是项目所用的外部引用包的路径。
.mymetadata 保存的是工程属性文件
.project 是工程构建配置文件
.metadata文件夹的作用 Eclipse内所有改动都放在这个文件夹
.setting文件夹的作用:
把.js文件的编码方式由改成默认的ISO-8859-1改成GBK时,这个文件会有记录。
如果把这个文件删了,在eclipse中查看js文件的中文字符就是乱码,但发布的时候还是能正常显示中文的。
结论:这个文件是eclipse查看js文件的时候用的,记录了用什么编码方式查看。与发布无关。.settings\文件夹不会被打到.war包里。
问题7:
Caused by: Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - jar:file:/F:/gszh/gszh/apache-tomcat-7.0.57/webapps/shop/WEB-INF/lib/struts2-core-2.3.4.1.jar!/struts-default.xml:29:72
一直报错,原来是一个缓存的jar包没引,却提示Struts.xml有问题,也是无语了。
原因探究:旧项目在webapps和work中的残留所致,删除它即可。
问题8:
tab1能加载echarts饼图,tab2则不行;或tab2能加载echarts饼图,tab1则不行(不能同时显示)。
①
查看F12发现,出现异步错误。
原因探究:$getJSON默认是不支持异步加载的。($ajax有支持异步的属性,它很灵活)
②
可以加个时间setTimeOut
还是不能正常显示,但发现已经成功得到JSON数据
原来是div的class少了active
原因探究:在bootstrap里面,active能加载效果,如果少了它,就加载不出来。
问题9:
帮yc调饼图,服务器能得到数据,返回前台却为空。
原因探究:<b>${ErrorRate}</b>的EL表达式值显示不了。调试后发现,在查看题目详情的时候,页面还发送了3个ajax请求(用$getJSON发送),所以用request.setAttribute("errorRate",errorRate);显示上图的100.0%是会丢失数据的,以至于在用tab进行Echarts图的转换的时候,request已经死亡。所以得把其换为request.getSession().setAttribute("errorRate", errorRate); 改后即可访问数据。
然而用浏览器自带的后退键,选择其他题目,再进入题目详情后,却显示了上题存储的数据(即访问的session不是最新的,而总是上一次的)
原来是EL表达式在加载页面的时候就把数据给读出来了,而我的request.getSession().setAttribute("errorRate", errorRate);是放在ajax请求的响应后端代码块中的,要发送ajax并响应后才能把值回显,导致新值还没覆盖,加载页面时就把旧数据给读出来了。
此页面涉及到四个请求:questiondetails、pieChart1、pieChart2、pieChart3,解决办法是把EL读取的字段,放在questiondetails请求中,这样就不会出现请求速度上面的不一致,而导致数据有先后。
问题10:
拿到yd的存储过程后,从数据库中(在服务器)读出来显示的是乱码
原因探究:远程服务器mysql默认并不是UTF-8,需要修改了数据库server的默认编码为UTF-8。
问题11:
table标签的包的数据显示不出来。
原因探究:table标签里有个属性data-url="tables/data1.json,去除即可。
问题12:
远程svn仓库有两个,下载到桌面上的时候,提示已下载,然而明明已经删除掉了。
原因探究:从svn仓库检出项目到本地,除了项目本身,还会将一个.svn的隐藏文件同步到本地端,用以记录版本控制。可开启Windows的隐藏模式,显示查看生成的.svn在各文件夹的分布情况。
问题13:
人工审核中的显示最近审核记录,不能按最新时间排序。
旧:
新:
原因探究:存储过程查询出来的审核时间是按字符串顺序排序而非按日期。
修改了p_query_recently_reviewed_scope
-- order by 'lastReviewDate' -- 这里是用字符串顺序排的,要把字符串改成日期类型
order by date_format(lastReviewDate,'%y-%m-%d-%H-%i-%s') DESC
BEGIN
-- 存储过程:查询某个审核者最近审核的单元
-- 0403
SELECT f_scope_path_string_by_back_tracking(unit.pk_scope_id) as 'scopePathString',
unit.pk_scope_id as 'unitId',unit.`name` as 'unitName',
f_last_review_date_of_a_unit(unit.pk_scope_id,in_reviewer_member_id) as 'lastReviewDate'-- 输入:审核者ID
from t_question,t_scope `lesson`,t_scope `unit`
where t_question.scope_pk_scope_id=lesson.pk_scope_id-- join
and lesson.fk_parent_id=unit.pk_scope_id-- join
and t_question.fk_reviewerMemberId=in_reviewer_member_id-- 输入:审核者ID
GROUP BY unit.pk_scope_id
order by date_format(lastReviewDate,'%y-%m-%d-%H-%i-%s') DESC
limit 0,5;-- 最多显示5条
--
END
问题14:
①错误率返回前台可能会出现小数点位数>2的情况;
DecimalFormat df = new DecimalFormat("#.##");
double converNum = Double
.parseDouble(questionDetailList.getErrorRate());
converNum *= 100;
String str = df.format(converNum);// 转换成对应的格式:XX.XX%
②数据库datetime类型存入不成功。
Date date = new Date();
Timestamp reviewDate = new Timestamp(date.getTime());