1

私は正常に動作するコードを使用していますが、これが私の 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;
    }
}

getListMillesimeActifMultimillesime は、リストを返すメソッドを持つ標準クラスです。宣言 :

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

c:for each は list と enum で正常に動作しますが、ここでの問題は getInstance の使用に起因します。MultiMillesimeFactory.Instance.ListMillesimeActif を試してみましたが成功しませんでした。

最後のスクリプトレットは次のとおりです。

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

これらの両方が取り外し可能かどうかはわかりません。

4

1 に答える 1

3

<%=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);
        //...
    }

    //...
}
于 2010-11-03T13:58:57.863 に答える