JSP: JSTL'nin <c: out> etiketi


110

Bir JSP sayfası yazmak, tam olarak ne yapar <c:out>? Aşağıdakilerin her ikisinin de aynı sonucu verdiğini fark ettim:

<p>The person's name is <c:out value="${person.name}" /></p>
<p>The person's name is ${person.name}</p>

Yanıtlar:


153

c:out siteler arası komut dosyası oluşturmayı önleyebilmeniz için HTML karakterlerinin çıkışını yapar.

Eğer person.name = <script>alert("Yo")</script>

komut dosyası ikinci durumda çalıştırılacak, ancak kullanıldığında c:out


2
Yalnızca 'escapeXML' true olarak ayarlanmışsa (varsayılan olarak olup olmadığından emin değil)
Chris Serra

17
Varsayılan olarak doğru olduğuna inanıyorum.
Zack The Human

7
NB HTML'den değil XML'den kaçar. JSTL'nin daha sinir bozucu inceliklerinden biri. Sonunda her zaman kendi HTML kaçış EL fn yazıyorum.
Adam Gent

4
Öznitelik adı büyük / küçük harfe duyarlıdır, bu nedenle escapeXml = "true" değil escapeXML
Mark Chorley

2
Bu cevabın kod örneğinin ne gösterdiği hakkında hiçbir fikrim yok - birisi açıklayabilir mi? "İkinci bir durumdan" bahsediyor ama bunu görmüyorum ve c: out'un kodda kullanıldığını görmüyorum.
IcedDante

126

Will Wagner'in söylediği gibi, jsp'nin eski sürümünde c:outdinamik metin çıktısı almak için her zaman kullanmalısınız .

Dahası, bu sözdizimini kullanarak:

<c:out value="${person.name}">No name</c:out>

isim boş olduğunda "İsim yok" metnini görüntüleyebilirsiniz.


24
Güzel! Bunu bilmiyordum.
Adam Asham

Katılıyorum, harika. Öğrettiğiniz ve yardım ettiğiniz için teşekkürler. Ben de bilmiyordum. Şerefe!
B-Money

20
veya <c: out value = "$ {person.name}" default = "No Name" />
gmustudent

2
JSR 52, bakım sürümü 2, bkz. Sayfa 22 "gövdeli". Bağlantı: download.oracle.com/otndocs/jcp/jstl-1.2-mrel2-eval-oth-JSpec
Barett

1
@Barett. Güzel. Bunun neden hiçbir öğretici veya örnek oluşturmadığını merak ediyorum. Varsayılan öznitelik IMO'dan daha uygun bir sözdizimi.
Thilo


5

EscapeXml değeri true değerine eşit bir öznitelik kullanarak Xml varlıklarının çıkışını açıkça etkinleştirebilirsiniz. Bilginize, varsayılan olarak "true" dur.


Bazı örnek kodlar bu cevabın tamamlanmasına gerçekten yardımcı olabilir.
RachelD

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.