jsp struts2 struts2-jquery struts2-jquery-grid struts2-jquery-plugin

jsp - Usar una lista desplegable en una columna de cuadrícula editable utilizando el plugin Struts2-jQuery-grid



struts2-jquery-plugin (2)

Estoy intentando completar una lista desplegable en una columna de cuadrícula utilizando el plugin Struts2-jQuery-grid-3.7.0 de la siguiente manera.

<s:url id="dataURL" action="CategoryList" namespace="/admin_side"/> <sjg:gridColumn name="subCategory.category.catName" index="subCategory.category.catName" edittype="select" searchtype="select" formoptions="{label:''Select''}" surl="%{dataURL}" editoptions="{dataUrl : ''%{dataURL}''}" editrules="{required: true}" title="Category" width="200" sortable="true" search="true" editable="true" sorttype="text"/>

Y la acción donde se mapea la acción de la Lista de categorías es la siguiente.

@Namespace("/admin_side") @ResultPath("/WEB-INF/content") @ParentPackage(value="struts-default") public final class CategoryList extends ActionSupport implements Serializable { @Autowired private final transient Service service = null; private List<Category>categories = new ArrayList<Category>(); private static final long serialVersionUID = 1L; public List<Category> getCategories() { return categories; } @Action(value = "CategoryList", results = { @Result(name = ActionSupport.SUCCESS, location = "Product.jsp"), @Result(name = ActionSupport.INPUT, location = "Product.jsp")}, interceptorRefs = { @InterceptorRef(value = "defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true", "validation.excludeMethods", "load"})}) public String load() throws Exception { System.out.println("load called..."); categories = service.getCatgeoryList(); return ActionSupport.SUCCESS; } }

Cuando se hace clic en un enlace de edición determinado en la grilla, el método load() se ejecuta donde se carga una lista de categorías desde la base de datos.

Sin embargo, la lista en la cuadrícula no muestra nada en el modo de edición (cuando se hace clic en el enlace editar). No puedo encontrar ejemplos relativos que puedan demostrar este tipo de cosas.

¿Cómo llenar esta lista desplegable especialmente, cómo dar a estas etiquetas desplegables usando la propiedad catName y los valores usando la catId (de Long type) por separado (mientras que la category en la lista tiene muchos otros atributos)?

No encuentro ejemplos relevantes para mapear java.util.List<E> a <sjg:grid> .

subCategory.category.catName es una propiedad anidada de la entidad Product .

En este caso, incluso después de completar la lista, también se debe tener en cuenta que el valor de visualización de esta columna es catName (nombre de categoría del tipo String). Sin embargo, el valor del elemento seleccionado para establecerse en una instancia de Product debe ser catId (ID de categoría del tipo Long) que no parece posible ya que el nombre de esta columna es subCategory.category.catName .

Intuitivamente, catId ( subCategory.category.catId ) se correlacionaría con catName ( subCategory.category.catName ) que sería incorrecto, si pudiera visualizar correctamente como si la lista ya estuviera completa.


En cuanto a la documentación relacionada con la propiedad gridColumn y editoptions :

dataUrl

Esta opción solo es válida para elementos de tipo select, es decir, tipo de edición: select y debe ser la URL para obtener los datos AJAX para el elemento seleccionado. Los datos se obtienen a través de una llamada AJAX y deben ser un elemento de selección HTML válido con las opciones deseadas Uno .... Puede usar el grupo de opciones.

su acción tiene que devolver un elemento de select válido. Eso significa que su resultado Product.jsp debe verse así:

<%@ taglib prefix="s" uri="/struts-tags"%> <s:select list="categories" key="id" value="name"/>

Referencia: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules


En Struts 2, la lista desplegable de HTML se puede representar a través de <s:select> etiqueta <s:select> . Para seleccionar automáticamente un valor predeterminado para una lista desplegable, acaba de declarar un atributo de “value” en la etiqueta y establecer el valor predeterminado en consecuencia.

Ejemplo:

Una lista de Java para generar las opciones de selección para el cuadro desplegable.

//... public class SelectAction extends ActionSupport { private List<String> searchEngine; private String yourSearchEngine; //set default value public String getDefaultSearchEngine() { return "yahoo.com"; } public SelectAction() { searchEngine = new ArrayList<String>(); searchEngine.add("google.com"); searchEngine.add("bing.com"); searchEngine.add("yahoo.com"); searchEngine.add("baidu.com"); } //... }

etiqueta para representar el cuadro desplegable HTML. El value=”defaultSearchEngine” llamará al método getDefaultSearchEngine() clase de acción correspondiente para devolver un valor de motor de búsqueda predeterminado.

Muchas acciones comparten preocupaciones comunes. Algunas acciones necesitan entrada validada. Es posible que otras acciones necesiten una carga de archivo para ser procesadas previamente. Otra Acción podría necesitar protección de un envío doble. Muchas acciones necesitan listas desplegables y otros controles rellenos previamente antes de que se muestre la página.

<s:select label="What''s your favor search engine" headerKey="-1" headerValue="Select Search Engines" list="searchEngine" name="yourSearchEngine" value="defaultSearchEngine" />

En este ejemplo, el cuadro desplegable seleccionará automáticamente "yahoo.com" como la opción predeterminada.

Agregue Struts2 jQuery Plugin Tag lib a su JSP

<%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> <%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>

Habilite el complemento jQuery Grid en su etiqueta Head

<sj:head jqueryui="true" jquerytheme="redmond" />

actualizar:

Especifique una Url de edición en su JSP

<s:url var="editurl" action="edit-grid-entry"/>

Y habilite Editar configurando los siguientes atributos en su JSP

<sjg:grid ... editurl="%{editurl}" ...>

luego define qué columna debe ser editable

<sjg:gridColumn ... editable="true" edittype="<type>" editoptions="{<options>}" editrules="{<rules>}" ... />

Ejemplo para una Opciones de Edición:

<sjg:gridColumn name="country" index="country" title="Country" editable="true" edittype="select" editoptions="{value:''France:France;USA:USA;Australia:Australia;Norway:Norway;Spain:Spain''}"/>

Ejemplo para Editar Reglas:

<sjg:gridColumn name="creditLimit" index="creditLimit" title="Credit Limit" editable="true" editrules="{ number: true, required: true, minValue : 100.0, maxValue : 10000.0 }" formatter="currency"/>

actualización: 1

<select name="catid" size="15" id="dataURL" multiple="multiple"> <option value="1 - One ">1 - One </option> <option value="2 - Two">2 - Two</option> <option value="3 - Three">3 - Three</option> <option value="4 - Four">4 - Four</option> <option value="5 - Five">5 - Five</option> </select>