2009-06-03 17 views
44

Etiketler kullanarak bunlara eklenen sayfaların bulunduğu jsp sayfasındaki değişkenler için kapsam belirleme kuralları nelerdir?"Dahil" sayfalara sahip jsp sayfalarındaki değişkenler

Anlayışım, içerilen bir sayfanın aslında sayfada birebir kopyalanmasıdır. Bu, bir ebeveyn jsp dosyasında bir değişkeni bildirmiş olsaydım, çocuklarda kullanılabilir olacağını varsayar. Ben fizibil bunu başlatmak için başarısız erkek kedi sunucusu başlatmaya çalıştığınızda whe tek başına. Ve herhangi bir sayfasında sayfaları dahil veya bunları kullanmak çünkü

Ancak Eclipse anlaşılır bu (şikayetçi.

Temelde istiyorum Ana sayfada oturumlardan bir kaç tane değişken alıp bunları alt sayfalarda kullanın.Bu işe yaramıyor ..

Çocuk sayfalarının her birinde oturumdan onları almayı düşünmüştüm. Ancak, onlara, tüm değişken değişkenleri verebilir mi, yoksa her sayfada onlar için farklı değişken isimleri seçmemi isterdim, bu yüzden onlar çatışmasaydılar.

Ayrıca, ana jss'de log4net'i içe aktarıyorsam içe aktarma işleminin ne yapması gerekir?

+0

Değişkenler oturumdaysa, sorun nerede? Ve BTW Ana sayfanın oturumu ile ne demek istiyorsunuz? –

+1

THe değişkenleri tamsayı değişkenleridir ve onları oturumdan almaları ve sonra bunları Tamsayıya dönüştürmeleri ve sonra bunları kullanabilmeleri için her birinin int değerini almalarıdır. Ayrıca boşluğu kontrol etmek için, yerel bir değişkeni ilan ederek bunu yapmak zorunda kalmamaya çalışırken kendimi biraz acı hissetmeye çalışıyordum. Jspf tavsiyesi için –

cevap

75

JSP'de diğer jsp sayfalarını eklemenin iki yolu vardır.

<%@include file="include.jsp"%> 

ve eski kullanırsanız

<jsp:include page="include.jsp" /> 

sonra ebeveyn ilan herhangi değişken JSP include.jsp (tabi Eclipse Tahmin ettiğin bu görmezsiniz) 'de kapsamına olacak Derleyici tarafından etkin bir şekilde kopyalandığı gibi.

İkinci yaklaşımı kullanırsanız, içerme çalışma zamanında yapılır ve içerme sayfasının kendi kapsamı vardır.

İthalat için Ditto. Bunları içerme sayfasındaki gereksiz yere almak güvenli olsa da.

Eğer eskiyi kullanıyorum, bir JSP parçasını belirtmek için .jspf ile eklemeyi tercih ediyorum. Fragman dosyalarındaki bazı Ekler uyarılarını kapatabilirim. Ancak genelde bu yöntemi kullanmaktan kaçınıyorum ve ikinci yaklaşımı tercih ediyorum.

Daha fazla bilgi belgelerde şu adreste bulunabilir: Include directive ve JSP include.

+3

+1 – Alfabravo

+0

Bu örnekte şaşkınım. Belki de Jasmper kodunda zorluklar var? * <% @ Include ...> formunu kullanarak; 'Inclued' .JSP içinde bir String'e yazmaya çalıştığımda bir çalışma zamanı JSP derleyici hatası alıyorum. Belki de "geriye doğru" değerleri geçmesine izin verilmediğini kabul edebilirim - Neden, @include için belirtilen kurallara göre hata? – will

+1

<% ve @ arasındaki bir alanın bir hataya neden olacağını unutmayın, bu nedenle <% @include file = "include.jsp"%> yazmayı deneyin. Cevap olarak gösterilen boşluk olmadan iyi çalışacaktır. – CodeReaper

4

Nesne yönelimli bir bakış açısından, child.jsp dosyasında yer alan parent.jsp değişkeninin kapsamına güvenmemenizi öneririz. Bunun nedeni, jsp'de bir parçayı eklediğimde, bu parçayı farklı yerlerde yeniden kullanmak istememdir. Örneğin, bir child.jsp varsa, parent1.jsp yanı sıra parent2.jsp içinde kullanmak isteyebilirsiniz. Durumda değişken miras bırakmamak daha iyidir. sayfanın yolu içinde değişken kullanmak istiyorsanız

+8

Bunun yerine ne yaparsınız? – Brimstedt

4

kullanın şu, dahil edilecek: Eğer bir değişken oluşturduğunuzda

<% pageContext.include("/cities/" + (String) request.getAttribute("country_code") + ".jsp"); %> 
2

, dahil sayfa, aksi halde oturuma kapsamını belirlesin görmeyecek. Örnek:

<logic:iterate id="supportTmp" name="publicites" indexId="indexLots" scope="session">          
    <c:set var="support" value="${supportTmp}" scope="session"/> 
    <c:choose> 
    <c:when test="${publiciteMoniteur == true}"> 
    <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteMoniteurLigne.jsp" /> 
    </c:when> 
    <c:otherwise> 
     <jsp:include page="/jsp/bodies/suiviEnvoiPubliciteDefautLigne.jsp" /> 
    </c:otherwise> 
</c:choose> 
</logic:iterate>