我在做工作流的待办列表界面时遇到了一点小麻烦。
在这里我向没有接触过工作流的朋友,解释一下待办列表的概念:它指的是登录人需要办理的工作中的任务列表,例如:小张需要分别为工作WorkA,WorkB,WorkC办理TaskB ,则当小张以他的用户名xz登录到工作流系统后,呈现给他的待办列表就是
|
任务名 |
工作名 |
1 |
TaskB |
WorkA |
2 |
TaskB |
WorkB |
3 |
TaskB |
WorkC |
待办列表页面(waitList.jsp)的代码很简单,所以我就大意了,下面是我最初写的代码:
1 <%@ page language="java" contentType="text/html; charset=GBK"
2 pageEncoding="GBK" %>
3 <%@ page import="db.TaskList,java.util.List,java.util.Iterator,db.Task"%>
4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
5 <html>
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; charset=GBK">
8 <title>待办列表</title>
9 </head>
10 <body>
11
12 <%
13 String userName=request.getParameter("userName");
14 session.setAttribute("username",userName);
15 TaskList taskList=new TaskList();
16 List waitTasks=taskList.getWaitTasks(userName);//得到待办列表
17 %>
18 </div>
19 <div align="center">
20 <p>待办列表
21 </p>
22 <form name="myform" method="post" action="">
23 <p>
24 <input type="button" name="Submit2" value="创建" onclick="javascript:window.location.replace('draft.jsp')">
25 </p>
26 <table width="200" border="1">
27 <tr>
28 <td> </td>
29 <td>TASK_ID</td>
30 <td>NODE_ID</td>
31 <td>PROCESS_ID</td>
32 </tr>
33
34 <%
35 for(Iterator it=waitTasks.iterator();it.hasNext();)
36 {
37 Task task=(Task)it.next();
38 %>
39 <tr>
40 <td align="center">
41 <input type="radio" name="radio" value="<%=task.getTask_id()%>">
42 </td>
43 <td><%=task.getTask_id()%></td>
44 <td><%=task.getNode_id()%></td>
45 <td><%=task.getProcess_id()%></td>
46 </tr>
47 <%
48 }
49 %>
50 </table>
51 <p>
52 <input type="button" name="do" value="办理" onclick="manage()">
53 </p>
54 </form>
55 <p> </p>
56 </div>
57 </body>
58 </html>
59 <script language="JavaScript">
60
61 function manage()
62 {
63 for(var i=0;i<window.document.myform.radio.length;i++)
64 {
65 if(window.document.myform.radio[i].checked)
66 {
67 window.location.replace('deal.jsp?taskId='+window.document.myform.radio[i].value);
68 break;
69 }
70 }
71 }
72 </script>
可是经过我的测试,当待办列表中只有一条记录的时候出错!经过我的分析是第63行的radio.length出错,因为只有当radio为数组类型时,才有length属性,而当待办列表中只有一条记录时,radio不是数组类型,所以调用radio.length当然出错了。改正它其实很容易,就是保证radio是数组类型,解决办法是在第33行加一条语句<input type="radio" name="radio" style="display:none">,问题解决了,因为此时的radio.length>=2。