JSP标记属性不能设置多次?
我有一些带有标签的旧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在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标签库标签,所以我面临这个问题。一旦我选择了一个,错误就消失了。使用来自两个不同库的相同标记会导致歧义