【发布时间】:2012-02-14 12:53:05
【问题描述】:
我已经定义了一个自定义标签来接受一个参数,一个数字,然后它会使用它来查找一些信息并返回。不过,我不断收到 NumberFormatException 。我正在使用 EL 将数字传递给我的 jsp 中的标签。
<my:myTag id="${action.id}"/>
在 Action 的 bean 类中:
private int id;
private void setId(int id){
this.id = id;
}
private int getId(){
return id;
}
在我的自定义标签处理程序中:
private int id;
//getters and setters for id
public int doStartTag() throws JSPException {
//Does some stuff with id
}
在我的顶级域名中(省略了一些内容):
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
如果我只是传入一个数字(即 id="6"),标签会执行我想要的操作,但当我尝试使用 EL 表达式值时总是会抛出异常。评估表达式时是否在某处发生了一些 int-string 转换?它是 bean 中的一个 int 字段,我认为它会这样通过?我尝试将我的标记处理程序的属性更改为 String 和 Integer,但都没有解决这个问题。我已将 rtexprvalue 设置为 true,因此它应该可以很好地评估它。任何帮助表示赞赏。
【问题讨论】:
-
你究竟在哪里得到空指针异常?
-
什么JSP引擎,什么版本?旧版本的 JSP 规范没有在 JSP 编译器阶段包含 EL 解析/评估 - 表达式必须由标记手动评估。
-
@Tim 谢谢。这为我指明了正确的方向,确实是必须在标签处理程序中手动评估表达式。如果您想将此作为答案,我会接受。