我正在使用java 1.6,struts和jstl-1.2.jar,我尝试使用jstl核心标记在jsp中打印列表。当我使用会话范围属性(${sessionScope.myList}
)时,核心标记就是值正确但是当我使用请求范围属性(${requestScope.myList}
)时,核心标记不会使用这些值
听到是web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>DownloadServlet</servlet-name>
<servlet-class>DownloadServlet</servlet-class>
<init-param>
<param-name>dir</param-name>
<param-value>/home/engneer/workspace/SLTTEN-MTN-V2/web/web_content/tenderdocs</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ServletConfiguratorSLT</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/classes/resources/ProxoolSLT.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>ServletConfiguratorCICOSE</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
<init-param>
<param-name>propertyFile</param-name>
<param-value>WEB-INF/classes/resources/ProxoolCICOS.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>proxool</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/servlet/DownloadServlet</url-pattern>
</servlet-mapping>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxool</servlet-name>
<url-pattern>/servlet/admin</url-pattern>
</servlet-mapping>
<!-- Session time out -->
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>public_dashboard.jsp</welcome-file>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- Error page specification -->
<error-page>
<error-code>500</error-code>
<location>/errors/500.htm</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errors/404.htm</location>
</error-page>
<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
</web-app>
ActViewTender.java
public class ActViewTender
extends Action {
static Logger logger = Logger.getLogger(ActViewTender.class);
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
String realPath = getServlet().getServletContext().getRealPath("/WEB-INF/log4jConfiguration.xml");
DOMConfigurator.configure(realPath);
try {
ReverseAuctionTender reverseAuctionTender = new ReverseAuctionTender();
ISupplier supplier = new Supplier();
List<TenderEnt> tendeList = reverseAuctionTender.ViewReverseAuctionTender(conn, strSupID);
List<TenderEnt> ReverseAuctionTenderList = new ArrayList<TenderEnt>();
List<String> watchList = supplier.getAddtoWatchListTender(conn, strSupID);
try {
for (TenderEnt tenderEnt : tendeList) {
String isWatched = "";
for (String wl : watchList) {
if (wl.equals(tenderEnt.getTenderNo().trim())) {
isWatched = "watched";
}
}
tenderEnt.setIsWatched(isWatched);
ReverseAuctionTenderList.add(tenderEnt);
}
request.setAttribute("myList", ReverseAuctionTenderList);
}
catch (Exception e) {
e.printStackTrace();
logger.fatal(e.getMessage());
}
forward = mapping.findForward("SupplierMain");
}
return forward;
}
}
听到的是jsp代码
<c:forEach items="${requestScope.myList}" var="tender">
<div class="small-12 tender auction-type online-tenders">
<div class="small-12 tender-number"><c:out value="${tender.tenderNo}"></c:out></div>
<div class="small-12 tender-detail">
<div class="small-12 medium-7 large-9 columns collapse tender-title">
<h4>${tender.description}</h4>
</div>
</div>
</div>
</c:forEach>
结果当我从servlet设置为session变量时,我只得到相同的列表(request.getSession().setAttribute("myList", ReverseAuctionTenderList);
和<c:forEach items="${sessionScope.myList}" var="tender">
)它工作正常
答案 0 :(得分:0)
这是因为struts映射文件中的redirect =“true”。当redirect = true时,转发时会清除请求中存储的数据。
删除此部分应该有帮助。