Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将值传递给提供NumberFormatException的自定义标记_Java_Jsp_Jsp Tags - Fatal编程技术网

Java 将值传递给提供NumberFormatException的自定义标记

Java 将值传递给提供NumberFormatException的自定义标记,java,jsp,jsp-tags,Java,Jsp,Jsp Tags,我已经定义了一个自定义标记,它接受一个参数,一个数字,然后用它来查找一些信息并返回。不过我一直有数字格式的感觉。我使用EL将数字传递给jsp中的标记 <my:myTag id="${action.id}"/> 在我的自定义标记处理程序中: private int id; //getters and setters for id public int doStartTag() throws JSPException { //Does some stuff with id } 在我的

我已经定义了一个自定义标记,它接受一个参数,一个数字,然后用它来查找一些信息并返回。不过我一直有数字格式的感觉。我使用EL将数字传递给jsp中的标记

<my:myTag id="${action.id}"/>
在我的自定义标记处理程序中:

private int id;
//getters and setters for id
public int doStartTag() throws JSPException {
//Does some stuff with id
}
在我的tld中(省略了一些内容):


身份证件
真的
真的
如果我只是在(ie,id=“6”)中传递一个数字,那么标记会执行我希望它执行的操作,但当我尝试使用EL表达式值时,总是抛出异常。当表达式被计算时,是否有一些int字符串转换发生?它是bean中的一个int字段,我假设它会这样被传递?我尝试将标记处理程序的属性更改为String和Integer,但都没有解决这个问题。我已经将rtexprvalue设置为true,所以它应该可以很好地进行评估。谢谢你的帮助

好的,这是我上面评论的较长版本

在JSP1.x中,JSP引擎对表达式语言一无所知。EL被定义为JSTL的一部分,但它内置于标记本身,引擎没有参与评估

在JSP2.0中,EL被移动到JSP规范中,并且引擎支持它。在JSP2.1中,EL与JSF EL合并

因此,如果您使用的是JSP1.x,那么您必须自己进行EL

但是,为了使事情更加复杂,在JSP2.0中,客户标记处理程序的API被简化了。在jsp1.x中,标签实现了
Tag
,但在jsp2.0中,标签实现了
SimpleTag

jsp2.x引擎将支持jsp1.x样式的标记(实现
标记的类
),但处理它们的方式与jsp1.x处理它们的方式相同-引擎不计算EL,标记需要显式地计算它


对于
rtexprvalue
,这实际上控制是否支持scriptlet表达式,而不是是否支持EL表达式(该属性在EL之前)。

您在哪里得到空指针异常?什么JSP引擎,什么版本?旧版本的JSP规范在JSP编译器阶段中没有包含EL解析/求值-表达式必须由标记手动求值。@Tim谢谢。这为我指明了正确的方向,事实上,表达式必须在标记处理程序中手动计算。如果你想回答这个问题,我会接受的。
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>