一个Login.jsp登陆的简单程序逻辑,我找不出,哪位大虾给偶指出来分数全给一个人,不够再加

trycatch2004 2004-09-27 10:44:10

这个问题折腾了我好几天了,大虾出手救救我啊!!!别看代码多,懂struts的大虾一下就该看出来的,不用看详细的代码,只要看几行关键的程序转移逻辑代码就可以了的。。。。摆脱啊!!!(后面很多只是附上的文件代码,不用看的,看看我的前4步)

我打开一个网上下载的程序,从浏览器中打开首页,然后根据首页上的"Log in"标签可以转到相应的登陆页面Login.jsp,但我看里面代码时,怎么看它代码的转移的路径不会到达Login.jsp啊,我把相关的各个转移的文件列出来,大虾给偶看看到底是我哪里看错了啊???

1、首页上有一个"Log in",它指向的地址是http://localhost:8080/.../.../WorklistAction.jsp,我打开WorklistAction.jsp文件如下:
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<c:redirect url="/protected/worklist.action"/>
<c:redirect url="/protected/worklist.action"/>
-------------------------------

2、于是我在struts-config.xml中找到如下语句:
<action path="/protected/worklist"
type="hero.struts.actions.WorklistAction"
scope="request"
validate="false">
<forward name="worklist" path="worklistDef"/>
</action>
----------------------------

3、接下来,我打开WorklistAction.java如下:
package hero.struts.actions;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;

import java.util.*;

import hero.struts.activity.*;
import hero.interfaces.*;
import hero.util.*;


public class WorklistAction extends AbstStrutsActionBase
{
public boolean authenticate(String username, String password)
{
return(true);
}
public ActionForward perform(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{

ActionForward actionForward = mapping.findForward(WORKLIST);
// Create the container for any errors that occur
ActionErrors errors = new ActionErrors();
HttpSession session = request.getSession();

try
{
Vector workList = new Vector();
hero.interfaces.UserSessionLocalHome userh = (UserSessionLocalHome)hero.interfaces.UserSessionUtil.getLocalHome();
hero.interfaces.UserSessionLocal usersession = userh.create();

hero.interfaces.ProjectSessionLocalHome projecth = (ProjectSessionLocalHome)hero.interfaces.ProjectSessionUtil.getLocalHome();

request.getSession(true).setAttribute("username", usersession.getUser());
request.getSession(true).setAttribute("password", usersession.getUserPassword());

Collection projects = usersession.getProjectList();
Iterator i = projects.iterator();
while (i.hasNext())
{
Hashtable todoListReady = new Hashtable();
Hashtable todoListAnti = new Hashtable();
Hashtable activityListAnti = new Hashtable();
Hashtable activityListExec = new Hashtable();

String currentProject = ((hero.interfaces.BnProjectLightValue)i.next()).getName();
Vector todoListNames = new Vector(usersession.getToDoList(currentProject));
Vector activityListNames = new Vector(usersession.getActivityList(currentProject));

if (todoListNames.size() != 0 || activityListNames.size() != 0)
{
try{
Worklist wl = new Worklist();
wl.setProjectName(currentProject);
hero.interfaces.ProjectSessionLocal projectsession = projecth.create();
projectsession.initProject(currentProject);

int j=0;
while (j<todoListNames.size())
{
StrutsNodeValue stnt = new StrutsNodeValue();
stnt.setProjectName(currentProject);
stnt.setName(((hero.interfaces.BnNodeValue)projectsession.getNodeValue((String)todoListNames.elementAt(j))).getName());
if (((hero.interfaces.BnNodeValue)projectsession.getNodeValue((String)todoListNames.elementAt(j))).getState() == hero.interfaces.Constants.Nd.READY)
todoListReady.put((String)todoListNames.elementAt(j),stnt);
else
todoListAnti.put((String)todoListNames.elementAt(j),stnt);
j++;
}
j=0;
while (j<activityListNames.size())
{
StrutsNodeValue stna = new StrutsNodeValue();
stna.setProjectName(currentProject);
stna.setName(((hero.interfaces.BnNodeValue)projectsession.getNodeValue((String)activityListNames.elementAt(j))).getName());

if (((hero.interfaces.BnNodeValue)projectsession.getNodeValue((String)activityListNames.elementAt(j))).getState() == hero.interfaces.Constants.Nd.ANTICIPATING)
activityListAnti.put((String)activityListNames.elementAt(j),stna);

else
activityListExec.put((String)activityListNames.elementAt(j),stna);
j++;

}
wl.setTodoListReady(todoListReady);
wl.setTodoListAnti(todoListAnti);
wl.setActivityListAnti(activityListAnti);
wl.setActivityListExec(activityListExec);
workList.add(wl);
}catch(Exception ex){};
}
}
request.getSession(true).setAttribute("worklist", workList);
request.getSession(true).setAttribute("worklistSize", Long.toString(workList.size()));
request.getSession(true).setAttribute("wsname",null);

actionForward = mapping.findForward(WORKLIST);
}catch(Exception e){errors.add("activity_error", new ActionError("error.deadline.mismatch"));}

if (!errors.empty()) {
saveErrors(request, errors);
}

// Forward control to the appropriate URI as determined by the action.
return (actionForward);
}

}
-------------------------

4、接下来,我又回到第2步的struts-config.xml里,根据<forward name="worklist" path="worklistDef"/>,在tileDefinitions.xml配置文件里找到如下语句:
<definition name="worklistDef" path="/protected/WorklistLayout.jsp">
<put name="body" value="/protected/Worklist.jsp"/>
<put name="header" value="/protected/Header.jsp"/>
</definition>
--------------------------------
--------------------------------
接下来根据这个tildDefinitions.xml配置文件的这段话应该好像根本不会到达想去的Login.jsp文件(目录下是有这个文件的,且是登陆界面),但在浏览器上运行是可以到达Login.jsp文件的,按照程序的逻辑我看不出怎么会到达Login.jsp页面的?!不明白,这里明明是跳到Worklist.jsp文件去执行嘛?!!!而Worklist.jsp文件执行的是商品的罗列,跟Login.jsp文件毫无瓜葛啊,不明白!!!
(我附上Worklist.jsp文件和Login.jsp文件)


...全文
271 点赞 收藏 20
写回复
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
trycatch2004 2004-09-30
不爽,这么个鸟问题一直没解决,明天买本jbuilder,重新建工程,把整个程序用jbuilder重新“创建”,然后单步跟踪调试,偶就不信这点东西会难倒我,nnd
回复
trycatch2004 2004-09-29
up
回复
Chinatosun 2004-09-29
up
回复
trycatch2004 2004-09-29
唉,这个问题烦死了,受不了了,再up一下
回复
ylymail 2004-09-28
<definition name="worklistDef" path="/protected/WorklistLayout.jsp">
<put name="body" value="/protected/Worklist.jsp"/>
<put name="header" value="/protected/Header.jsp"/>
</definition>

注意,这里的Body部分包含的网页是可以更改的,并不只是限定为WorkList.jsp我估计是在WorkListLayout.jsp里面有更改body部分页面的代码,恰好这个文件你没贴出源代码,自己去好好看看,应该能找到答案,编程中没有什么神奇或奇怪的事情,要么是自己不够仔细,要么是自己有些地方不懂,大家共同努力
回复
lsqlister001 2004-09-28
up
回复
crazyxp 2004-09-28
在struts-config.xml中找login.jsp然后再在程序中找forward到这里的那个name。。然后就找到了。
回复
koolgi 2004-09-28
up
回复
xch28 2004-09-28
虽然有100分,但是代码太长,是在看不下去。-_-!!!
回复
sylmoon 2004-09-28
学习,帮你定
回复
zhonghua2003 2004-09-28
为了文静,努力工作!!帮你顶!!
回复
trycatch2004 2004-09-28
中秋了,祝大家中秋快乐!!有灭有大虾还在csdn的,帮小弟解决这个问题~~~
回复
ymm 2004-09-28
好晕,关注一下
回复
trycatch2004 2004-09-28
“这里的Body部分包含的网页是可以更改的,并不只是限定为WorkList.jsp我估计是在WorkListLayout.jsp里面有更改body部分页面的代码”---哪位给我讲讲这个吗?!!

thx啊。。。
回复
trycatch2004 2004-09-28
to “ AHUA1001(99) ”,你好,这个程序不是我自己写的,是网上下载的一个程序啊,我只是从登陆模块开始看啊,但看这里就碰到问题了埃。。。 555~~~
回复
AHUA1001 2004-09-28
楼主,你的方式太复杂了!
用jsp的session对象解决这个问题是最简单也是最常用的方式。
回复
milkbread 2004-09-28
ps:偶就是楼主啦^_^
回复
milkbread 2004-09-28
“ylymail(李易)”,你好!!!你这么一说,倒真点到了我的疑点,下面是WorklistLayout.jsp文件,这里有个<tiles:insert name="sidebar"/>,
但<definition name="worklistDef" path="/protected/WorklistLayout.jsp">
<put name="body" value="/protected/Worklist.jsp"/>
<put name="header" value="/protected/Header.jsp"/>
</definition>
在这个tile的定义里没sidebar这个东西,怎么回事?另外你说的“WorkListLayout.jsp里面有更改body部分页面的代码”这里怎么体现?
谢谢谢谢!!!


<%@ taglib uri="/WEB-INF/tiles.tld" prefix="tiles" %>

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>

<% response.setHeader("Cache-Control","no-store"); //HTTP 1.1 %>
<head>
<link style="test/css" rel="stylesheet" href="/product/config/default.css">
</head>
<html>
<body>
<table cellpadding="2" cellspacing="2" border="0">
<tbody>
<tr><td align="left">
<tiles:insert attribute="header" /> </TD>
</td></tr>
</table>

<table cellpadding="2" cellspacing="2" border="0" width="800">
<tbody>
<tr>
<td valign="Top">
<table cellpadding="2" cellspacing="2" border="0" width="100%">
<tbody>
<tr>
<td valign="Top"><br>
<tiles:insert name="sidebar"/>
</td>
</tr>
</tbody>
</table>
</td>
<td valign="Top"><br>
<tiles:insert name="body"/>
</td>
</tr>
</tbody>
</table>
</body>
</html>





回复
trycatch2004 2004-09-27
<!--Gestion des activity si il y en a-->
<c:if test="${lastactexec==1}">
<c:forEach items="${work.activityListAnti}" var="actAnti" varStatus="statusactanti" begin="${nbactanti}" end="${nbactanti}">
<c:set var="nbactanti" value="${nbactanti+1}" scope="session"/>
<td>
<img src="../images/pink_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actAnti.name}"/>" class="viewer">
<c:out value="${actAnti.name}"/></a>
</td>
<c:if test="${statusactanti.last}">
<c:set var="lastactanti" value="1" scope="session"/>
</c:if>
</c:forEach>
</c:if>
<c:forEach items="${work.activityListExec}" var="actexec" varStatus="statusactexec" begin="${nbactexec}" end="${nbactexec}">
<c:set var="nbactexec" value="${nbactexec+1}" scope="session"/>
<td>
<img src="../images/red_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actexec.name}"/>" class="viewer">
<c:out value="${actexec.name}"/></a>
</td>
<c:if test="${statusactexec.last}">
<c:set var="lastactexec" value="1" scope="session"/>
</c:if>
</c:forEach>
<!--si il n'y a pas d'activity exec-->
<c:if test="${nbactexec==0}">
<c:forEach items="${work.activityListAnti}" var="actAnti" varStatus="statusactanti" begin="${nbactanti}" end="${nbactanti}">
<c:set var="nbactanti" value="${nbactanti+1}" scope="session"/>
<td>
<img src="../images/pink_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actAnti.name}"/>" class="viewer">
<c:out value="${actAnti.name}"/></a>
</td>
<c:if test="${statusactanti.last}">
<c:set var="lastactanti" value="1" scope="session"/>
</c:if>
</c:forEach>
</c:if>
</tr>
</c:forEach>

<!--Affichage des activityExec restante-->

<c:forEach items="${work.activityListExec}" var="actexec" begin="${nbactexec}">
<c:if test="${nbactexec>=1 || nbactanti>=1 || nbtodo>=1}">
<tr><td></td>
</c:if>
<c:set var="nbactexec" value="${nbactexec+1}" scope="session"/>
<td></td><td>
<img src="../images/red_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actexec.name}"/>" class="viewer">
<c:out value="${actexec.name}"/></a>
</td></tr>
</c:forEach>


<!--Affichage des activityAnti restante-->
<c:forEach items="${work.activityListAnti}" var="actanti" begin="${nbactanti}">
<c:if test="${nbactexec>=1 || nbactanti>=1 || nbtodo>=1}">
<tr><td></td>
</c:if>
<c:set var="nbactanti" value="${nbactanti+1}" scope="session"/>
<td></td><td>
<img src="../images/pink_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actanti.name}"/>" class="viewer">
<c:out value="${actanti.name}"/></a>
</td></tr>
</c:forEach>

</c:forEach>

<tr height="10"><td></td></tr>
<tr bgcolor="#3333CC" height="2"><td></td><td></td><td></td>
</tr><tr height="5"><td></td><td></td><td></td></tr>
</c:forEach>

</table>
</td></tr>

<tr><td>
<!--Insertion du navigateur pour le pager-->
<table align="center" cellspacing="5">

<c:if test="${worklistSize!=0}">
<div align="center">
<c:if test="${npprojet>1}">
<td> <a href="/product/protected/Firstpage.jsp" class="pager"><<</a></td>
<td><a href="/product/protected/Prevpage.jsp" class="pager"><</a></td>
</c:if>
<td><bean:message key="pager.page"/>
<c:out value="${npprojet}"/>
/

<!--Si la valeur de numpagemax n'a pas 閠?d閒inie -->
<fmt:formatNumber var="projetmax" value="${worklistSize / nbpro +0.5}" type="number" maxFractionDigits="0" scope="session"/>
<c:out value="${projetmax}"/>
</td>
<c:if test="${npprojet * nbpro < worklistSize }">
<td><a href="/product/protected/Nextpage.jsp" class="pager">></a></td>
<td><a href="/product/protected/Lastpage.jsp" class="pager">>></a></div></td>
</c:if>
</c:if>
<c:if test="${worklistSize==0}">
<p align="center"><bean:message key="pager.noproject"/></p>
</c:if>
</td></tr>
</body>





/////////////////////////////////////////////////Login.jsp文件如下:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<html>
<head>
<STYLE TYPE=text/css>.texte {font-face:Arial;font-size:10px;color:black }</STYLE>
<link rel="stylesheet" href="/product/config/default.css" type="text/css">
</head>
<body>
<table width="982" border="0" cellpadding="0">
<td><b><bean:message key="bonita.loginpage"/></b></td>
<%
if ((pageContext.getSession()).getAttribute("username") != null)
{
String username = (pageContext.getSession()).getAttribute("username").toString();
%>
<font color="#009900"><I><%=username%></I></font><br>
<%}else{%>
<td align="right" color="#FF0000"><b class="log"><bean:message key="product.notlogged"/></b></td>
<%}%>
</table>
<hr align="left" width="982" color="#993366" size="5"</hr>

<br>
<br>
<table class="login" border="0" align="center">
<form method="POST" action="j_security_check">
<tr>
<td>
<bean:message key="prompt.username"/>
</td>
<td>
<input type="text" name="j_username"/>
</td>
</tr>
<tr>
<td>
<bean:message key="prompt.password"/>
</td>
<td>
<input type="password" name="j_password"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="Submit" name="j_security_check">
</td>
</tr>
<tr>
<td>
<a href="/product/login/UserLayout.jsp"><bean:message key="prompt.newaccount"/></a>
</td>
</tr>
</form>
</table>
</body>
</html>
回复
trycatch2004 2004-09-27
##############################################
############################################## 附:

///////////////////////////////////////Worklist.jsp文件如下:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>

<%
//<jsp:useBean id="worklist" scope="session" class="java.util.Vector"/>-->
%>
<BODY>

<!--Variables du pager-->
<%--D閏alration de la variable g閞ant le num閞o de page des projet pour le "pager" --%>
<c:if test="${empty npprojet}">
<c:set var="npprojet" value="1" scope="session"/>
</c:if>
<%-- nombre de projet par page --%>
<c:if test="${empty nbpro}">
<c:set var="nbpro" value="6" scope="session"/>
</c:if>


<table width="100%" border="0" cellpadding="0">
<tr>
<td>
<b><bean:message key="index.product"/></b>
</td>
<c:choose>
<c:when test="${sessionScope.username != null}">
<td>
<td align="right"><font color="#009900"><I><c:out value="${sessionScope.username}"/></I></font></td>
</td>
</c:when>
<c:otherwise>
<td>
<td align="right" color="#FF0000"><b class="log"><bean:message key="product.notlogged"/></b></td>
</td>
</c:otherwise>
</c:choose>

</tr>
</table>
<hr align="left" width="100%" color="#993366" size="5"</hr>

<table align="center"><tr><td>
<table cellpadding="2" cellspacing="2" border="0" width="450" align="center" class="viewer">
<tbody>
<tr>
<br>
<td valign="Top"><b><u><bean:message key="activity.state"/></u></b><br>
</td>

<td valign="Top"><img src="../images/yellow_square.gif" alt="" width="12" height="10">
</td>
<td valign="Top"><bean:message key="activity.ready"/><br>
</td>

<td valign="Top"><img src="../images/green_square.gif" alt="" width="12" height="10">
</td>
<td valign="Top"><bean:message key="activity.anticipable"/><br>
</td>

<td valign="Top"><img src="../images/pink_square.gif" alt="" width="12" height="10">
</td>
<td valign="Top"><bean:message key="activity.anticipating"/><br>
</td>

<td valign="Top"><img src="../images/red_square.gif" alt="" width="12" height="10">
</td>
<td valign="Top"><bean:message key="activity.executing"/><br>
</td>

</tr>
</tbody>
</table>
</td></tr><tr><td> </td></tr>
<tr><td>
<table align="center" border="0" width="400" cellpadding="0" cellspacing="0">
<tr class="tableau">
<td class="projet"><bean:message key="worklist.project"/></td>
<td class="projet"><bean:message key="worklist.todolist"/></td>
<td class="projet"><bean:message key="worklist.activitylist"/></td>
</tr><tr><td> </td></tr>
<c:forEach items="${worklist}" var="work" varStatus="status" begin="${nbpro*npprojet-nbpro}" end="${nbpro*npprojet-1}">
<c:forEach items="${work.projectName}" var="pro">
<!--Iteration des projets-->

<tr><td> <a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>" class="viewer">
<c:out value="${pro}"/></td></a>
<c:set var="nbtodo" value="0" scope="session"/>
<c:set var="nbactanti" value="0" scope="session"/>
<c:set var="nbactexec" value="0" scope="session"/>
<c:set var="lastactexec" value="0" scope="session"/>
<c:set var="lastactanti" value="0" scope="session"/>
<c:set var="lasttodoanti" value="0" scope="session"/>

<c:forEach items="${work.todoListReady}" var="todoready" varStatus="status">
<!--Iteration des todolistReady-->
<c:if test="${nbtodo!=0}">
</tr><tr><td></td>
</c:if>
<td>
<img src="../images/yellow_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${todoready.name}"/>" class="viewer">
<c:out value="${todoready.name}"/></a>
<c:set var="nbtodo" value="${nbtodo + 1}" scope="session"/>
</td>
<!--Gestion des activity si il y en a-->
<c:if test="${lastactexec==1}">
<c:forEach items="${work.activityListAnti}" var="actAnti" varStatus="statusactanti" begin="${nbactanti}" end="${nbactanti}">
<c:set var="nbactanti" value="${nbactanti+1}" scope="session"/>
<td>
<img src="../images/pink_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actAnti.name}"/>" class="viewer">
<c:out value="${actAnti.name}"/></a>
</td>
<c:if test="${statusactanti.last}">
<c:set var="lastactanti" value="1" scope="session"/>
</c:if>
</c:forEach>
</c:if>
<c:forEach items="${work.activityListExec}" var="actexec" varStatus="statusactexec" begin="${nbactexec}" end="${nbactexec}">
<td>
<img src="../images/red_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actexec.name}"/>" class="viewer">
<c:out value="${actexec.name}"/></a>
</td>
<c:if test="${statusactexec.last}">
<c:set var="lastactexec" value="1" scope="session"/>

</c:if>
<c:set var="nbactexec" value="${nbactexec+1}" scope="session"/>
</c:forEach>
<!--si il n'y a pas d'activity exec-->
<c:if test="${nbactexec==0}">
<c:forEach items="${work.activityListAnti}" var="actAnti" varStatus="statusactanti" begin="${nbactanti}" end="${nbactanti}">
<c:set var="nbactanti" value="${nbactanti+1}" scope="session"/>
<td>
<img src="../images/pink_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${actAnti.name}"/>" class="viewer">
<c:out value="${actAnti.name}"/></a>
</td>
<c:if test="${statusactanti.last}">
<c:set var="lastactanti" value="1" scope="session"/>
</c:if>
</c:forEach>
</c:if>
</tr>
</c:forEach>


<!--Gestion des todolistanti-->
<c:forEach items="${work.todoListAnti}" var="todoanti">
<!--Si il y a d閖a eu au moins une todolist-->
<c:if test="${nbtodo!=0}">
<tr><td></td><td>
</c:if>
<!--si il n'y a pas eu de todolist-->
<c:if test="${nbtodo==0}">
<c:set var="nbtodo" value="${nbtodo+1}" scope="session"/>
<td>
</c:if>
<img src="../images/green_square.gif"/>
<a href="/product/protected/Action.jsp?projectname=<c:out value="${pro}"/>&nodename=<c:out value="${todoanti.name}"/>" class="viewer">
<c:out value="${todoanti.name}"/></a>
</td>

回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告