JSTL問題:2つの最後のスクリプトレットが私のJSPから削除されます
質問
正常に動作するコードを使用しますが、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() %>
これらの両方が取り外し可能であるかどうかはわかりません。
解決
あなたは置き換えることができます <%=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);
//...
}
//...
}