JSTL проблема: 2 последний скриптлет, чтобы удалить из моего JSP - PullRequest
1 голос
/ 03 ноября 2010

Я использую код, который работает нормально, но вот последние скриптлеты в моем jsp:

<%  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: для каждого отлично работает со списком и перечислением, но здесь проблема заключается в использовании getInstance, я безуспешно пробовал MultiMillesimeFactory.Instance.ListMillesimeActif.* И последний скриптлет:

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

Я не уверен, что оба они являются съемными.

1 Ответ

3 голосов
/ 03 ноября 2010

Вы можете заменить скриптлет <%=request.getContextPath() %> тегом JSTL:

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

Нередко можно увидеть что-то подобное:

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

Что касается проблемы с MultiMillesimeFactory: похоже, это класс в вашей кодовой базе, и мы не можем волшебным образом отладить эту проблему для вас. Это не похоже на проблему JSP.

Что означает "попробовал MultiMillesimeFactory.Instance.ListMillesimeActif без успеха"?


Редактировать: re: ваш комментарий: Я не уверен, что понимаю, что вы имеете в виду, но я думаю, проблема в том, что вам нужно использовать полное имя класса MultiMillesimeFactory ищите это правильно. Тем не менее, вам действительно следует избегать использования скриптлетов в максимально возможной степени. Вместо этого используйте правильный сервлет для вставки 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);
        //...
    }

    //...
}
...