2012-05-16 15 views
5

que tienen algunos viejos archivos JSP con etiquetas tales comoEl atributo de etiqueta JSP no se puede configurar más de una vez?

<mytag:editbox name="SEL_1" param="onclick='clickit();" param="size='4'" />.

Estos JSP se ejecuta muy bien en Websphere 5.0. Cuando lo muevo a Websphere 8.0, algo está mal. La fuente de Java compilado por JSP como esto:

editbox.setName("SEL_1"); 
editbox.setParam("size='4'"); //replaced by the last one 
editbox.setParam("size='4'"); 

los últimos [atributos] sobrescribe que los anteriores. También pruebo el JSP en Websphere 6.0 y Tomcat. WAS6 es lo mismo que 8.0, y Tomcat dice:

org.apache.jasper.JasperException: /index.jsp (line: 17, column: 20) Attribute qualified names must be unique within an element 

El atributo de la etiqueta no se puede establecer más de una vez.

¿Es este el requisito de la especificación JSP 2.0+? (Creo que el contenedor JSP en WAS5.0 es JSP 1.2.)

Puedo fusionar los dos atributos param en uno para corregir el problema, pero ¿cómo obtener el resultado correcto sin cambiar la fuente JSP?

Respuesta

5

Tener múltiples atributos con el mismo nombre fue nunca compatible con la especificación JSP. Si funcionó en Websphere 5, eso habría dependido del comportamiento de la propiedad permitida por esa versión del servidor, y no por ninguna otra. Considero que la clase de etiqueta hace algo así como agregar los valores a una colección, o algo así.

Tendrá que refactorizar la etiqueta para que sea conforme a las especificaciones, ya sea utilizando una cadena delimitada o usando etiquetas anidadas.

3

Las etiquetas JSP son elementos XML. Y un elemento XML no puede tener múltiples atributos con el mismo nombre. En mi humilde opinión, su código pasó a funcionar solo por accidente en las versiones anteriores de Websphere, probablemente debido a una validación descuidada e interpretación de las etiquetas JSP.

0

para tener el mismo comportamiento con WAS 8 puede incluir este atributo JSP en su descriptor de despliegue de aplicaciones (ibm-ext-web.xmi):

allowMultipleAttributeValues conjunto de true.

O establezca la propiedad personalizada del contenedor web com.ibm.wsspi.jsp.allowMultipleAttributeValues en true.

Fuente: http://www-01.ibm.com/support/docview.wss?uid=swg1PM65454

0

que tenían el mismo problema. Estaba usando etiquetas struts con etiquetas de biblioteca de etiquetas Display al mismo tiempo, así que me enfrenté a este problema. Una vez que elegí uno para usar el error se fue. Usar las mismas etiquetas de dos bibliotecas diferentes causa ambigüedad.

Cuestiones relacionadas