JSP标记属性不能设置多次?

JSP标记属性不能设置多次?,jsp,jsp-tags,Jsp,Jsp Tags,我有一些带有标签的旧JSP文件,比如 这些JSP在WebSphere5.0中运行得非常好。当我将其移动到WebSphere8.0中时,出现了一些问题。JSP编译的java源代码如下: editbox.setName("SEL_1"); editbox.setParam("size='4'"); //replaced by the last one editbox.setParam("size='4'"); 最后一个[属性]覆盖它之前的属性。我还测试了WebSphere6.0和Tomcat中

我有一些带有标签的旧JSP文件,比如

这些JSP在WebSphere5.0中运行得非常好。当我将其移动到WebSphere8.0中时,出现了一些问题。JSP编译的java源代码如下:

editbox.setName("SEL_1");
editbox.setParam("size='4'");  //replaced by the last one
editbox.setParam("size='4'");
最后一个[属性]覆盖它之前的属性。我还测试了WebSphere6.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
标记的属性不能设置多次

这是JSP2.0+规范的要求吗?(我认为WAS5.0中的JSP容器是JSP1.2。)


我可以将两个param属性合并为一个来纠正问题,但是如何在不更改JSP源的情况下获得正确的结果?

JSP规范从不支持具有多个同名属性。如果它在Websphere 5上工作,那么这将取决于该服务器版本允许的专有行为,而不是其他人。我认为tag类可以做一些类似于向集合添加值之类的事情


您需要通过使用分隔字符串或使用嵌套标记来重构标记,使其符合规范。

JSP标记是XML元素。一个XML元素不能有多个同名属性。IMHO,您的代码在以前的Websphere版本中只是偶然工作的,可能是由于对JSP标记的草率验证和解释

要与WAS 8具有相同的行为,可以在应用程序部署描述符中包含此JSP属性(
ibm ext web.xmi
):

allowMultipleAttributeValue
设置为
true

或者将Web容器自定义属性
com.ibm.wsspi.jsp.AllowMultipleAttributeValue
设置为
true


来源:

我也有同样的问题。我同时使用struts标签和Display标签库标签,所以我面临这个问题。一旦我选择了一个,错误就消失了。使用来自两个不同库的相同标记会导致歧义