मेरे उदाहरण में एक f: selectItems-विशेषता के साथ एक selectOneMenu है। चुनिंदा आइटम इस तरह मेरी सेम से हल कर रहे हैं: मेरे सेम मेंजेएसएफ सिलेक्ट इटम्स और एस्केपिंग (एक्सएसएस)
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
विधि getSelectItems() कि तरह लग रहा है:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("Peter");
list.add(obj);
return list;
}
वस्तुओं प्रदर्शित किए जाते हैं कि एक विशेषता के साथ सरल वस्तुओं रहे हैं " नाम "।
इस बिंदु तक कुछ खास नहीं है। लेकिन अब मुझे लगता है कि करने के लिए अपने-प्रक्रिया में परिवर्तन:
public List<MyObject> getSelectItems() {
List<MyObject> list = new LinkedList<MyObject>();
MyObject obj = new MyObject("<script>alert('xss is bad');</script>");
list.add(obj);
return list;
}
जावास्क्रिप्ट नहीं करता MenuRenderer क्लास और मेरा पेज की सहायता से निकले हो मुझे चेतावनी-संदेश को दर्शाता है।
क्या कोई कारण है कि SelectItem के एस्केप-एट्रिब्यूट का डिफ़ॉल्ट मान "झूठा" है? मैं उस समस्या को कैसे ठीक कर सकता हूं? (मैं मोजाररा 2.1.7 का उपयोग करता हूं)
आप अपना उत्तर यहां देख सकते हैं [यहां] (http://stackoverflow.com/questions/14238646/how-to-escape-fselectitem-itemlabel-attribute) –
@ विकसवी: ओपी की ठोस समस्या दूसरे तरीके से संबंधित है। – BalusC