代码之家  ›  专栏  ›  技术社区  ›  jayjaypg22

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

  •  1
  • jayjaypg22  · 技术社区  · 14 年前

    我使用的代码运行良好,但这里是我的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;
        }
    }
    

    multimilesime是一个带有方法的标准类 getListMillesimeActif 返回列表。宣言:

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

    最后一个脚本是:

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

    我不确定这两个是可移动的。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Matt Ball    14 年前

    您可以替换 <%=request.getContextPath() %> 带有JSTL标记的scriptlet:

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

    像这样的事情也不少见:

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

    至于 MultiMillesimeFactory

    “尝试了multimillsimefactory.Instance.listmellesimeactif但没有成功”是什么意思?


    编辑: 回复:您的意见:我不确定我是否理解您的意思,但我想问题是您需要使用 好好查一下。但是,您确实应该尽量避免使用scriptlet。相反,使用适当的servlet注入 ListMillesimeActif 在请求中,如下所示:

    public class MyServlet extends HttpServlet implements Servlet
    {
        //...
    
        @Override
        public void doGet(HttpServletRequest request, HttpServletResponse response)
        {
            //...
            List listMillesime = MultiMillesimeFactory.getInstance().getListMillesimeActif();
            request.setAttribute("millesime", listMillesime);
            //...
        }
    
        //...
    }