【发布时间】:2013-02-22 09:00:35
【问题描述】:
在我的示例中有一个带有 f:selectItems 属性的 selectOneMenu。选择项是从我的 bean 中解析的,如下所示:
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{bean.selectItems}" var="obj" itemValue="#{obj}" itemLabel="#{obj.name}"/>
</h:selectOneMenu>
我的 bean 中的 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 没有被 MenuRenderer-Class 转义,我的页面显示了警报消息。
SelectItem的escape-attribute的默认值为“false”有什么原因吗? 我该如何解决这个问题? (我使用 Mojarra 2.1.7)
【问题讨论】:
-
你可以找到你的答案here
-
@VikasV:OP 的具体问题与此相反。