2010-10-13 8 views
5

Benimkine benzer ama aynı olmayan bir durumu açıklayan birkaç soruyla karşılaştım. Örneğin, This question, portletleri kullanmama dışında hemen hemen aynı sorunu gösterir - sadece sıkıcı ol 'JSP + JSTL + EL + vb. Kullanıyorum.Çapraz bağlantı JSTL içe aktarma yoluyla bir JSP'ye nasıl parametre geçirebilirim?

İki uygulama bağlamım var ve bir JSP'yi birinden diğerine aktarmak istiyorum. Bunu biliyorum:

<c:import context="/" url="/WEB-INF/jsp/foo.jsp"/> 

Ancak, ben de ithal foo.jsp bir parametre geçmek istiyorum. Ama bu kodu:

<c:import context="/" url="/WEB-INF/jsp/foo.jsp"> 
    <c:param name="someAttr" value="someValue"/> 
</c:import> 
düzgün foo.jsp parametreyi göndermek görünmüyor

; foo.jsp sonra *

<% System.out.println("foo.jsp sees that someAttr is: " 
         + pageContext.findAttribute("someAttr")); %> 

gibi bir şey ise bu yazdırılır alır:

yüzden
foo.jsp sees that someAttr is: someValue 

, belli ki, someAttr bulunamıyor:

foo.jsp sees that someAttr is: null 

Bunu görmek istiyorum oysa foo.jsp.

Bunu nasıl düzeltirim?


*

+0

'foo.jsp' öğesinin aslında içe aktarıldığından nasıl emin oluyorsunuz? –

+1

@Adeel: Ne aldığınızı anlayamadığımdan emin değilim. Foo.jsp' öğesini içe aktaran bir sayfa istediğimde, konsolumda 'println' ifadesini görüyorum ve "foo.jsp" nin diğer içeriğini işlemek için bir girişim görüyorum. someAttr} '. Üzgünüm, benim için geç oldu - bu cevap veriyor mu? –

cevap

6

ayrıca istek parametre olarak almak gerekir, böylece bir istek parametresi olarak ayarladığımız (evet, bu sadece bu sorunu ayıklamaktadır, scriplets==bad, biliyorum) . siz de scriptlets sevmediğim gibi görünüyor yana

aşağıda bir EL çözüm: bu özel durumda <jsp:include> üzerindeki herhangi bir ekstra avantaj eklemez

${param.someAttr} 

Not <c:import> söyledi. Dosyaları farklı bir bağlamdan veya tamamen farklı bir etki alanından almak istediğinizde kullanışlıdır, ancak bu durum artık geçerli değildir. Aşağıdaki Ayrıca sadece çalışmış olmalıydı:

<jsp:include page="/WEB-INF/jsp/foo.jsp"> 
    <jsp:param name="someAttr" value="someValue" /> 
</jsp:include> 

Bu şekilde dahil sayfa ana JSP aynı PageContextveHttpServletRequest erişimi vardır. Bu daha yararlı olabilir.

+0

Aslında JSP'leri farklı bir bağlamdan içe aktarmaya çalışıyorum. "$ {Param.someAttr}" önerinizle almayı denerim - eğer çalışırsa, "someAttr" öğesine, sayfanın/isteğin/etc'nin bir özniteliğiymiş gibi erişmenin herhangi bir yolu var mıdır (örneğin, $ gibi) someAttr} ')? –

+0

Hayır, farklı bir istekle ilgilidir. Oturum, içerikler aynı oturumu paylaşırsa alabileceğiniz en iyi şeydir (sunucu yapılandırmasında yapılandırılabilir).Yine de, aynı seansta farklı talepler arasında öngörülemeyen çatışmalardan kaçınmak için talep parametrelerini tercih ederim. – BalusC

+0

Her zaman olduğu gibi bekleyin. Teşekkürler! –