2014-11-12 1 views
2

Привет всем Я использую Spring mvc, и у меня есть форма, где я должен использовать поле со списком в списке драйверов объектов для загрузки в поле со списком, но оказывается, я показываю его как строку, а не как объект.<form: select spring mvc показывает объект как строку

немного выше У меня есть поле со списком, в котором я передаю то же самое, но не в форме и позиции с JSTL.

, что мне нужно, что первые два атрибута моего объекта загружается в поле со списком

Вот код и изображения, таким образом они могут помочь мне.

Контроллер

@RequestMapping(value="products.htm", method=RequestMethod.GET) 
public String homeSuppliers(@RequestParam(required=false) String state, ModelMap model){ 

    try { 

     if (state != null) { 
      model.addAttribute("state", state); 
     } 

     List<ProveedoresDTO> listSupplier = supplierService.getAllSuppliersDTO(); 

     List<ProductosDTO> listProducts = productService.getAllProductsDTO(); 

     model.addAttribute("listProducts",listProducts); 

     model.addAttribute("listSupplier",listSupplier); 

     model.addAttribute("productAtt", new ProductsDTO()); 

    } catch (Exception e) { 
     model.addAttribute("msg",e.getMessage()); 
    } 

    return "productsView/products"; 
} 

JSP

<select id="comboProducts" onchange="BuscaProductPorId()"> 
    <option value="0"></option> 
    <c:forEach items="${listProducts}" var="product"> 
     <option value="${product.productID}">${product.productName}</option> 
    </c:forEach> 
</select> 
<h1>${msg}</h1> 

<form:form commandName="productAtt" action="crearProduct" method="get" 
    id="formSend"> 
    <fieldset> 
     <legend>Product</legend> 
     <form:hidden path="productID" /> 
     <table> 
      <tr> 
       <td><form:label path="productName">Nombre Product</form:label></td> 
       <td>:</td> 
       <td><form:input path="productName" /></td> 
       <td><form:errors path="productName" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="supplierID">Select Supplier</form:label></td> 
       <td>:</td> 
       <td><form:select path="supplierID" multiple="false" items="${listSupplier}"></form:select></td> 
       <td><form:errors path="supplierID" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="quantityPerUnit">Cantidad por Unidad</form:label></td> 
       <td>:</td> 
       <td><form:input path="quantityPerUnit" /></td> 
       <td><form:errors path="quantityPerUnit" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="unitPrice">Precio Unitario</form:label></td> 
       <td>:</td> 
       <td><form:input path="unitPrice" /></td> 
       <td><form:errors path="unitPrice" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="unitsInStock">Unidades en Stock</form:label></td> 
       <td>:</td> 
       <td><form:input path="unitsInStock" /></td> 
       <td><form:errors path="unitsInStock" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="unitsOnOrder">Unidades en Orden</form:label></td> 
       <td>:</td> 
       <td><form:input path="unitsOnOrder" /></td> 
       <td><form:errors path="unitsOnOrder" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="reorderLevel">Nivel de Orden</form:label></td> 
       <td>:</td> 
       <td><form:input path="reorderLevel" /></td> 
       <td><form:errors path="reorderLevel" /></td> 
      </tr> 
      <tr> 
       <td><form:label path="discontinued">Descontinuado</form:label></td> 
       <td>:</td> 
       <td><form:input path="discontinued" /></td> 
       <td><form:errors path="discontinued" /></td> 
      </tr> 
      <tr> 
       <td><br></td> 
      </tr> 
      <tr> 
       <td><input type="submit" value="Crear Product" name="crea" 
        id="crea"></td> 
       <td><input type="button" onclick="formReset()" 
        value="Limpiar Campos" /></td> 
      </tr> 
     </table> 
    </fieldset> 
</form:form> 

Результат

SpringSelect

+0

Я думаю, что вам не хватает опции '<форма: Параметры изделия =«$ {listaSupplieres}»ItemValue = "nameOfValue" itemLabel = "nameOfLabel" /> 'вложенное внутри' 'tag – ochi

+0

О, я только что заметил опечатку. В форме у вас есть '$ {listaSupplieres}', но на контроллере у вас есть 'listSupplier' в качестве имени атрибута - это специально? – ochi

ответ

4

Вы не указываете, что использовать для ваших вариантов. Попробуйте это:

<form:select path="supplierID" multiple="false"> 
     <form:options items="${listSupplier}" itemValue="SupplierID" itemLabel="CompanyName"/> 
</form:select> 

Пожалуйста, обратите внимание, что имя items было изменено, чтобы соответствовать приведенному в @Controller

+0

Это, наверное, лучший способ. –

Смежные вопросы