我有一个在 JSP 中使用的自制标签库。我的contains
-tag 有问题。
这是一个通用的包含检查,它接受一个列表和一个对象,并执行一个简单的检查列表是否包含该对象。但是,当列表包含整数值时,我遇到了问题。
这就是我调用标签的方式:
<custom:contains object="1" list="${sessionScope.USER.userProfiles}"/>
这是它调用的java类:
public class ContainsTag extends SimpleTagSupport{
private List<Object> list;
private Object object;
public void setList(List<Object> list) {
this.list = list;
}
public void setObject(Object object) {
this.object = object;
}
@Override
public void doTag() throws JspException, IOException {
boolean result;
try {
if(list == null || object == null){
result = false;
}
else{
result = list.contains(object);
}
getJspContext().getOut().print(result);
} catch (Exception e) {
e.printStackTrace();
// stop page from loading further by throwing SkipPageException
throw new SkipPageException("Exception in checking if " + list
+ " contains " + object);
}
}
}
Printline 语句表明,即使打印了对象1
,并且打印了列表[1]
,结果也是false
. 由于该标签适用于其他类型的对象(字符串等),因此我得出结论,对象是一个字符串值,因此在整数列表中找不到。我也不能将对象完全转换为整数,因为我的标签不再是通用的。
有没有办法指定参数是 EL 中的整数值?我需要制作另一个标签ContainsInteger
吗?或者这个问题还有其他解决方案吗?
更新:
将对象值设置为,"${1}"
而不是"1"
,没有区别......