##############################################
############################################## 附:///////////////////////////////////////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>
############################################## 附:///////////////////////////////////////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>
<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>
<put name="body" value="/protected/Worklist.jsp"/>
<put name="header" value="/protected/Header.jsp"/>
</definition>注意,这里的Body部分包含的网页是可以更改的,并不只是限定为WorkList.jsp我估计是在WorkListLayout.jsp里面有更改body部分页面的代码,恰好这个文件你没贴出源代码,自己去好好看看,应该能找到答案,编程中没有什么神奇或奇怪的事情,要么是自己不够仔细,要么是自己有些地方不懂,大家共同努力
但<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>
用jsp的session对象解决这个问题是最简单也是最常用的方式。