¿Qué pasa con headerKey = “- 1”?

Lo que está mal con:

 

Muchos ejemplos en línea usan este valor: http://www.coderanch.com/t/439139/Struts/wrong-select http://www.mkyong.com/struts2/struts-2-sselect-drop-down-box -ejemplo/

PERO la documentación real (puede ver esto en la información sobre herramientas en Eclipse colocando el cursor sobre el símbolo) dice

Clave para el primer elemento en la lista. No debe estar vacio! ‘-1’ y ” es correcto ”, es malo.

-1 parece bastante lógico para mí y, de todos modos, no debería ser una opción válida. “es correcto”, no tiene sentido en ningún nivel para mí, así que no me preocupa demasiado.

No hay nada malo con la clave, pero puede ser un poco con los documentos: -1 es una clave entera, '-1' es una cadena, '' es una char vacía, "" es una cadena vacía, pero la clave no debe estar vacía . Por lo tanto, -1 , '-1' , ' ' , " " son valores válidos. De los documentos:

‘1’ es un char, ’01’ es un String, “1” es un String. Esto es importante ya que si el valor devuelto por su atributo de “valor” NO es del mismo tipo que la clave en el atributo “lista”, NO COINCIDIRÁN, aunque sus valores de Cadena sean equivalentes. Si no coinciden, no se seleccionará automáticamente nada en su lista.

Debe proporcionar al atributo listKey un tipo de campo correspondiente, por lo que -1 es para enteros de tipos numéricos, en lugar de ' ' y " " son para caracteres y tipos de cadena.

El marco utiliza una conversión de tipo al comparar claves y valores de la etiqueta de select y para evitar que se produzcan errores de tipografía en algún lugar en el tiempo de ejecución de OGNL, es mejor que proporcione el tipo correctamente y dos atributos clave tengan el mismo tipo. Y si el valor de la clave, que no debe estar vacío, coincide con el valor especificado en ambos atributos, se completará la opción de valor del encabezado.