我想在JSP的下拉列表中填充数据库中的值。 问题是,我没有从任何servlet向这个JSP转发请求。我是直接从URL打开这个JSP。
http://mywebsite/thisJsp.jsp
现在我不想在JSP中使用任何Java代码,而是使用EclipseLink JPA。我做的是创建了一个过滤器类。
public class MyFilter implements Filter{
private FilterConfig filterConfig = null;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
String servletPath = httpRequest.getServletPath();
if(servletPath != null & servletPath.endsWith("thisJsp.jsp")) {
CatalogDB cdb = new CatalogDB();
List<Catalog> catalogs = cdb.getCatalogs();
request.setAttribute("catalogs", catalogs);
}
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
现在我在web.xml中配置了这个过滤器
<filter>
<filter-name>myFilter</filter-name>
<filter-class>MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
问题是流进入Filter并从数据库中获取值。它甚至将它设置在请求对象中。但是在JSP上我得到一个错误,就是找不到“目录”。
答案 0 :(得分:0)
我很抱歉,JSP中存在小错误。 我正在使用
<c:forEach var="catalog" items="catalogs" >
而不是
<c:forEach var="catalog" items="${catalogs}" >