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.