我要做的是学校的作业,新闻管理系统,问题时修改复选框的中的文章分类,明明取消了选择还能在下个界面中的getParameterValues拿到。
有个界面是修改新闻的,名字newsDetailUpdateSimple.jsp,代码如下:
<body>
<% //下面获取文章原本信息
String url = "";
boolean flag = false;
News news = null;
String title = "";
String author = request.getParameter("name");
String summary = "";
String content = "";
String sid = request.getParameter("id");
List<String> categories = new ArrayList<String>();
String category1="", category2="", category3="";
if(sid != null){
int id = Integer.parseInt(sid);
NewsService newsService = new NewsServiceImpl();
news = newsService.getNewsById(id);
title = news.getTitle();
author = news.getAuthor();
summary = news.getSummary();
content = news.getContent();
NewsCategoryService newsCategoryService = new NewsCategoryServiceImpl();
categories = newsCategoryService.getCategoryByNewsId(id);
if(categories.size()>0){
category1 = categories.get(0);
if(categories.size()>1){
category2 = categories.get(1);
if(categories.size()>2){
category3 = categories.get(2);
}
}
}
url = "doUpdate.jsp";
flag = true;
}
%>
<form name ="dataFrm" id="dataFrm" action="<%=url %>?id=<%=sid %>" method="post" >
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<thead>
<tr><td align="center" colspan="2" class="text_tabledetail2"><h4>修改资讯</h4></td></tr>
</thead>
<tbody>
<tr>
<td style="text-align:right;" class="text_tabledetail2">分类</td>
<td class="cate_label">
<label><input type="checkbox" name="category" value="搞笑" onclick="changeColor(0)"/>搞笑</label> |
<label><input type="checkbox" name="category" value="校园" onclick="changeColor(1)"/>校园</label> |
<label><input type="checkbox" name="category" value="运动" onclick="changeColor(2)"/>运动</label> |
<label><input type="checkbox" name="category" value="竞技" onclick="changeColor(3)"/>竞技</label> |
<label><input type="checkbox" name="category" value="幻想" onclick="changeColor(4)"/>幻想</label> |
<label><input type="checkbox" name="category" value="科幻" onclick="changeColor(5)"/>科幻</label> |
<label><input type="checkbox" name="category" value="剧情" onclick="changeColor(6)"/>剧情</label> |
<label><input type="checkbox" name="category" value="异世界" onclick="changeColor(7)"/>异世界</label> |
<label><input type="checkbox" name="category" value="恋爱" onclick="changeColor(8)"/>恋爱</label> |
<label><input type="checkbox" name="category" value="催泪" onclick="changeColor(9)"/>催泪</label> |
<label><input type="checkbox" name="category" value="治愈" onclick="changeColor(10)"/>治愈</label> |
<label><input type="checkbox" name="category" value="致郁" onclick="changeColor(11)"/>致郁</label> |
<label><input type="checkbox" name="category" value="冒险" onclick="changeColor(12)"/>冒险</label> |
<label><input type="checkbox" name="category" value="热血" onclick="changeColor(13)"/>热血</label> |
<label><input type="checkbox" name="category" value="机战" onclick="changeColor(14)"/>机战</label> |
<label><input type="checkbox" name="category" value="动作" onclick="changeColor(15)"/>动作</label> |
<i id="msg" style="margin-left:10px"></i>
</td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">标题</td>
<td style="text-align:left;"><input type="text" name="title" value="<%=title %>"/></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">作者</td>
<td style="text-align:left;"><input type="text" name="author" value="<%=author %>" readonly="true"/></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">摘要</td>
<td style="text-align:left;"><textarea id="summary" name="summary" rows="2" cols="30"><%=summary %></textarea></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">内容</td>
<td style="text-align:left;">
<div id="xToolbar"></div>
<textarea id="newscontent" name="newscontent" class="ckeditor" rows="10" cols="50"><%=content %></textarea></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">上传图片 </td>
<td style="text-align:left;"><input type="file" name="picPath" value=""/></td>
</tr>
<tr>
<td style="text-align:right;" colspan="2">
<button type="submit" class="page-btn2" name="save">保存</button>
<button type="button" class="page-btn2" name="return" onclick="javascript:location.href='newsDetailList.jsp'">返回</button>
</td>
</tr>
</tbody>
</table>
</form>
<%
Object omess = request.getAttribute("mess");
if(omess != null){
out.println(omess.toString());
}
%>
<script>
var cnt = 0;//记录选择的分类个数,最多选三个
var labels = document.getElementsByTagName("label");
var category = document.getElementsByName("category");
window.onload = function(){
var category1="<%=category1%>";
var category2="<%=category2%>";
var category3="<%=category3%>";
var categories = [category1,category2,category3];
//console.log("category.length:"+category.length);
for(var i=0;i<category.length;i++){
var j;
for(j=0;j<3;j++){
if(category[i].value == categories[j]){
//console.log("该文章最初分类有"+category[i].value);
labels[i].checked=true;
//console.log(category[i].value+labels[i].checked);
//console.log("labels"+i+":"+labels[i].checked);
labels[i].style.backgroundColor="RGB(244,158,227)";
labels[i].style.color="white";
cnt++;
//console.log(cnt);
if(cnt>=3){//选择三个分类后禁用其他选项
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=true;
}
}
showMsg();
}
}
break;
}
if(j==3){labels[i].checked=false;}
}
};
function showMsg(){
msg.innerHTML = "最多选择三个分类";
msg.style.color = "red";
msg.style.fontSize = "16px";
}
function changeColor(i){
var msg = document.getElementById("msg");
if(labels[i].checked){
labels[i].checked=false;
//console.log(category[i].value+labels[i].checked);
labels[i].style.backgroundColor="";
labels[i].style.color="";
//console.log("点击了"+category[i].value);
cnt--;
//console.log(cnt);
if(cnt<3){
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=false;
//console.log("分类"+(i+1)+"被启用");
}
}
msg.innerHTML = "";
}
}else{
if(labels[i].disable) return;
labels[i].checked=true;
//console.log(category[i].value+labels[i].checked);
labels[i].style.backgroundColor="RGB(244,158,227)";
labels[i].style.color="white";
cnt++;
console.log("2:"+cnt);
if(cnt>=3){
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=true;
//console.log("分类"+(i+1)+"被禁用");
}
}
showMsg();
}
}
}
var submit = document.getElementsByName("save")[0];
submit.onclick = function(){
var num=0;
//for(i=0;i<16;i++){num++; console.log(category[i].value+labels[i].checked);}
var flag = false;
for(var i=0;i<labels.length;i++){
if(labels[i].checked){
flag = true;
break;
}
}
if(!flag) {alert("至少选择一个分类!"); return false;}
};
</script>
</body>
</html>下面这个是处理更新的页面, doUpdate.jsp:
<body>
<%
request.setCharacterEncoding("utf-8");
Object oid = request.getParameter("id");
if(oid != null){
int id = Integer.parseInt(oid.toString());
NewsDao newsdao = new NewsDaoImpl();
News news = newsdao.getNewsById(id);
out.print(id+"\t"+news.getId()+"\t"+news.getTitle());
boolean flag1=false, flag2=false;
String[] categories = request.getParameterValues("category");
for(int i=0;i<categories.length;i++)
System.out.println(i+categories[i]);
String title = request.getParameter("title");
String author = request.getParameter("author");
String summary = request.getParameter("summary");
String content = request.getParameter("newscontent");
if(title!="" && author!="" && summary!="" && content!=""){
news.setTitle(title);
news.setAuthor(author);
news.setSummary(summary);
news.setContent(content);
news.setModifyDate(new Date());
NewsService newsService = new NewsServiceImpl();
flag1 = newsService.updateNews(news);
NewsCategoryService newsCategoryService = new NewsCategoryServiceImpl();
flag2 = newsCategoryService.deleteNewsCategory(id);
for(int i=0;i<categories.length;i++){
NewsCategory newsCategory = new NewsCategory();
newsCategory.setNewsId(id);
newsCategory.setCategoryName(categories[i]);
newsCategory.setCreateDate(new Date());
flag2 = newsCategoryService.addNewsCategory(newsCategory);
//System.out.println(categories[i]+flag2);
if(!flag2) break;
}
if(flag1 && flag2){
response.sendRedirect(request.getContextPath()+"/index/newsDetailList.jsp");
}else{
request.setAttribute("mess", "修改失败!");
request.getRequestDispatcher("/index/newsDetailCreateSimple.jsp").forward(request, response);
}
}
NewsService newsService = new NewsServiceImpl();
newsService.updateNews(news);
}else{out.println("no param");}
%>
<body>
有个界面是修改新闻的,名字newsDetailUpdateSimple.jsp,代码如下:
<body>
<% //下面获取文章原本信息
String url = "";
boolean flag = false;
News news = null;
String title = "";
String author = request.getParameter("name");
String summary = "";
String content = "";
String sid = request.getParameter("id");
List<String> categories = new ArrayList<String>();
String category1="", category2="", category3="";
if(sid != null){
int id = Integer.parseInt(sid);
NewsService newsService = new NewsServiceImpl();
news = newsService.getNewsById(id);
title = news.getTitle();
author = news.getAuthor();
summary = news.getSummary();
content = news.getContent();
NewsCategoryService newsCategoryService = new NewsCategoryServiceImpl();
categories = newsCategoryService.getCategoryByNewsId(id);
if(categories.size()>0){
category1 = categories.get(0);
if(categories.size()>1){
category2 = categories.get(1);
if(categories.size()>2){
category3 = categories.get(2);
}
}
}
url = "doUpdate.jsp";
flag = true;
}
%>
<form name ="dataFrm" id="dataFrm" action="<%=url %>?id=<%=sid %>" method="post" >
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<thead>
<tr><td align="center" colspan="2" class="text_tabledetail2"><h4>修改资讯</h4></td></tr>
</thead>
<tbody>
<tr>
<td style="text-align:right;" class="text_tabledetail2">分类</td>
<td class="cate_label">
<label><input type="checkbox" name="category" value="搞笑" onclick="changeColor(0)"/>搞笑</label> |
<label><input type="checkbox" name="category" value="校园" onclick="changeColor(1)"/>校园</label> |
<label><input type="checkbox" name="category" value="运动" onclick="changeColor(2)"/>运动</label> |
<label><input type="checkbox" name="category" value="竞技" onclick="changeColor(3)"/>竞技</label> |
<label><input type="checkbox" name="category" value="幻想" onclick="changeColor(4)"/>幻想</label> |
<label><input type="checkbox" name="category" value="科幻" onclick="changeColor(5)"/>科幻</label> |
<label><input type="checkbox" name="category" value="剧情" onclick="changeColor(6)"/>剧情</label> |
<label><input type="checkbox" name="category" value="异世界" onclick="changeColor(7)"/>异世界</label> |
<label><input type="checkbox" name="category" value="恋爱" onclick="changeColor(8)"/>恋爱</label> |
<label><input type="checkbox" name="category" value="催泪" onclick="changeColor(9)"/>催泪</label> |
<label><input type="checkbox" name="category" value="治愈" onclick="changeColor(10)"/>治愈</label> |
<label><input type="checkbox" name="category" value="致郁" onclick="changeColor(11)"/>致郁</label> |
<label><input type="checkbox" name="category" value="冒险" onclick="changeColor(12)"/>冒险</label> |
<label><input type="checkbox" name="category" value="热血" onclick="changeColor(13)"/>热血</label> |
<label><input type="checkbox" name="category" value="机战" onclick="changeColor(14)"/>机战</label> |
<label><input type="checkbox" name="category" value="动作" onclick="changeColor(15)"/>动作</label> |
<i id="msg" style="margin-left:10px"></i>
</td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">标题</td>
<td style="text-align:left;"><input type="text" name="title" value="<%=title %>"/></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">作者</td>
<td style="text-align:left;"><input type="text" name="author" value="<%=author %>" readonly="true"/></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">摘要</td>
<td style="text-align:left;"><textarea id="summary" name="summary" rows="2" cols="30"><%=summary %></textarea></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">内容</td>
<td style="text-align:left;">
<div id="xToolbar"></div>
<textarea id="newscontent" name="newscontent" class="ckeditor" rows="10" cols="50"><%=content %></textarea></td>
</tr>
<tr>
<td style="text-align:right;" class="text_tabledetail2">上传图片 </td>
<td style="text-align:left;"><input type="file" name="picPath" value=""/></td>
</tr>
<tr>
<td style="text-align:right;" colspan="2">
<button type="submit" class="page-btn2" name="save">保存</button>
<button type="button" class="page-btn2" name="return" onclick="javascript:location.href='newsDetailList.jsp'">返回</button>
</td>
</tr>
</tbody>
</table>
</form>
<%
Object omess = request.getAttribute("mess");
if(omess != null){
out.println(omess.toString());
}
%>
<script>
var cnt = 0;//记录选择的分类个数,最多选三个
var labels = document.getElementsByTagName("label");
var category = document.getElementsByName("category");
window.onload = function(){
var category1="<%=category1%>";
var category2="<%=category2%>";
var category3="<%=category3%>";
var categories = [category1,category2,category3];
//console.log("category.length:"+category.length);
for(var i=0;i<category.length;i++){
var j;
for(j=0;j<3;j++){
if(category[i].value == categories[j]){
//console.log("该文章最初分类有"+category[i].value);
labels[i].checked=true;
//console.log(category[i].value+labels[i].checked);
//console.log("labels"+i+":"+labels[i].checked);
labels[i].style.backgroundColor="RGB(244,158,227)";
labels[i].style.color="white";
cnt++;
//console.log(cnt);
if(cnt>=3){//选择三个分类后禁用其他选项
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=true;
}
}
showMsg();
}
}
break;
}
if(j==3){labels[i].checked=false;}
}
};
function showMsg(){
msg.innerHTML = "最多选择三个分类";
msg.style.color = "red";
msg.style.fontSize = "16px";
}
function changeColor(i){
var msg = document.getElementById("msg");
if(labels[i].checked){
labels[i].checked=false;
//console.log(category[i].value+labels[i].checked);
labels[i].style.backgroundColor="";
labels[i].style.color="";
//console.log("点击了"+category[i].value);
cnt--;
//console.log(cnt);
if(cnt<3){
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=false;
//console.log("分类"+(i+1)+"被启用");
}
}
msg.innerHTML = "";
}
}else{
if(labels[i].disable) return;
labels[i].checked=true;
//console.log(category[i].value+labels[i].checked);
labels[i].style.backgroundColor="RGB(244,158,227)";
labels[i].style.color="white";
cnt++;
console.log("2:"+cnt);
if(cnt>=3){
for(var i=0;i<labels.length;i++){
if(!labels[i].checked){
labels[i].disable=true;
//console.log("分类"+(i+1)+"被禁用");
}
}
showMsg();
}
}
}
var submit = document.getElementsByName("save")[0];
submit.onclick = function(){
var num=0;
//for(i=0;i<16;i++){num++; console.log(category[i].value+labels[i].checked);}
var flag = false;
for(var i=0;i<labels.length;i++){
if(labels[i].checked){
flag = true;
break;
}
}
if(!flag) {alert("至少选择一个分类!"); return false;}
};
</script>
</body>
</html>下面这个是处理更新的页面, doUpdate.jsp:
<body>
<%
request.setCharacterEncoding("utf-8");
Object oid = request.getParameter("id");
if(oid != null){
int id = Integer.parseInt(oid.toString());
NewsDao newsdao = new NewsDaoImpl();
News news = newsdao.getNewsById(id);
out.print(id+"\t"+news.getId()+"\t"+news.getTitle());
boolean flag1=false, flag2=false;
String[] categories = request.getParameterValues("category");
for(int i=0;i<categories.length;i++)
System.out.println(i+categories[i]);
String title = request.getParameter("title");
String author = request.getParameter("author");
String summary = request.getParameter("summary");
String content = request.getParameter("newscontent");
if(title!="" && author!="" && summary!="" && content!=""){
news.setTitle(title);
news.setAuthor(author);
news.setSummary(summary);
news.setContent(content);
news.setModifyDate(new Date());
NewsService newsService = new NewsServiceImpl();
flag1 = newsService.updateNews(news);
NewsCategoryService newsCategoryService = new NewsCategoryServiceImpl();
flag2 = newsCategoryService.deleteNewsCategory(id);
for(int i=0;i<categories.length;i++){
NewsCategory newsCategory = new NewsCategory();
newsCategory.setNewsId(id);
newsCategory.setCategoryName(categories[i]);
newsCategory.setCreateDate(new Date());
flag2 = newsCategoryService.addNewsCategory(newsCategory);
//System.out.println(categories[i]+flag2);
if(!flag2) break;
}
if(flag1 && flag2){
response.sendRedirect(request.getContextPath()+"/index/newsDetailList.jsp");
}else{
request.setAttribute("mess", "修改失败!");
request.getRequestDispatcher("/index/newsDetailCreateSimple.jsp").forward(request, response);
}
}
NewsService newsService = new NewsServiceImpl();
newsService.updateNews(news);
}else{out.println("no param");}
%>
<body>
不过你这个复选框应该不是直接get获取值吧
不过代码太长了,我没仔细看