在我的例子中有一個selectOneMenu,它帶有一個f:selectItems屬性。該選擇項是從我的豆解決這樣的:在我的豆JSF SelectItems和轉義(xss)
<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;
}
JavaScript的doesn't得到由MenuRenderer-Class和我的網頁逃脫顯示我警報消息。
是否有任何原因爲什麼SelectItem的escape-attribute的默認值是「false」? 我該如何解決這個問題? (我使用Mojarra 2.1.7)
你可以找到你的答案[here](http://stackoverflow.com/questions/14238646/how-to-escape-fselectitem-itemlabel-attribute) – 2013-02-22 09:51:36
@VikasV:OP的具體問題涉及到其他方式。 – BalusC 2013-02-22 11:49:59