我有一些带有标签的旧JSP文件 mytag:editbox name =“SEL_1”param =“onclick ='clickit();” param =“size ='4'”/. 这些JSP在Websphere 5.0中运行良好.当我将它移动到Websphere 8.0时,出了点问题. JSP编译的
< mytag:editbox name =“SEL_1”param =“onclick ='clickit();” param =“size ='4'”/>.
这些JSP在Websphere 5.0中运行良好.当我将它移动到Websphere 8.0时,出了点问题. JSP编译的java源代码如下:
editbox.setName("SEL_1"); editbox.setParam("size='4'"); //replaced by the last one editbox.setParam("size='4'");
最后的[属性]会覆盖它之前的那些.我还在Websphere 6.0和Tomcat中测试了JSP. WAS6与8.0相同,Tomcat说:
org.apache.jasper.JasperException: /index.jsp (line: 17, column: 20) Attribute qualified names must be unique within an element
标签的属性不能设置多次.
这是JSP 2.0规范的要求吗? (我认为WAS5.0中的JSP容器是JSP 1.2.)
我可以将两个param属性合并为一个来纠正问题,但如何在不更改JSP源的情况下获得正确的结果?
JSP规范从不支持具有相同名称的多个属性.如果它在Websphere 5上运行,那么这将取决于该服务器版本允许的专有行为,而不是任何其他行为.我认为标签类做的事情就像将值添加到集合或其他类似的东西.您需要通过使用分隔字符串或使用嵌套标记来重构标记以符合规范.