jstl问题:从我的jsp中删除的最后一个scriptlet

时间:2010-11-03 13:40:09

标签: java jsp jstl scriptlet

我使用的代码运行正常,但这是我jsp中的最后一个scriptlet:

<%  List listMillesime= MultiMillesimeFactory.getInstance().getListMillesimeActif();
    pageContext.setAttribute("listMillesime",listMillesime);
    %>
...
<c:forEach var="millesime" items="${listMillesime}">
...
</c:forEach>

这是工厂声明:

public class MultiMillesimeFactory {

    private static MultiMillesime multiMillesime;

    private MultiMillesimeFactory(){
    }

    public static MultiMillesime getInstance() {
        if (multiMillesime == null) {
            multiMillesime = new MultiMillesime();
        }
        return multiMillesime;
    }
}

Multimillesime是一个标准类,方法getListMillesimeActif返回一个列表。声明:

public class MultiMillesime {
...
   public List getListMillesimeActif() throws Exception {
     List _l = Collections.synchronizedList(new LinkedList());
...
     return _l;
   }
}

c:对于list和enum上的每个工作正常但是这里的问题来自于使用getInstance,我尝试了MultiMillesimeFactory.Instance.ListMillesimeActif但没有成功。

最后一个小脚本是:

<a href='<%=request.getContextPath() %>

我不确定这两个都是可拆卸的。

1 个答案:

答案 0 :(得分:3)

您可以使用JSTL标记替换<%=request.getContextPath() %> scriptlet:

<a href="${pageContext.request.contextPath}" />

看到这样的事情并不罕见:

<c:set var="ctx" value="${pageContext.request.contextPath}"/>
...
<a href="${ctx}" />

至于MultiMillesimeFactory的问题:它看起来像是你的代码库中的一个类,我们无法为你神奇地调试这个问题。这听起来不像JSP问题。

“尝试MultiMillesimeFactory.Instance.ListMillesimeActif没有成功”是什么意思?


编辑:重新:你的评论:我不确定我明白你的意思,但我猜你的问题是你需要使用{{1的完全限定类名正确地查找它。但是,您确实应该尽可能避免使用scriptlet。相反,使用适当的servlet将MultiMillesimeFactory注入请求中,如下所示:

ListMillesimeActif