0

Here's the form

        <form:form commandName="product" enctype="multipart/form-data" action="${pageContext.request.contextPath}/product/save">
            <!-- Image Input -->
            <div class="form-row">
                <div class="col-xs-12 form-group">
                    <label class="control-label">Product Image</label>
                    <div class="input-group image-preview">
                        <input type="text" class="form-control image-preview-filename" disabled="disabled">
                        <span class="input-group-btn">
                            <!-- image-preview-clear button -->
                            <button type="button" class="btn btn-default image-preview-clear" style="display:none;">
                                <span class="glyphicon glyphicon-remove"></span> Clear
                            </button>
                            <!-- image-preview-input -->
                            <div class="btn btn-default image-preview-input">
                                <span class="glyphicon glyphicon-folder-open"></span>
                                <span class="image-preview-input-title">Browse</span>
                                <form:input type="file" accept="image/png, image/jpeg, image/gif" path="productImage"/>
                            </div>
                        </span>
                    </div>
                </div>
            </div>
            <!-- Product Number -->
            <div class="form-row">
                <div class="col-xs-12 form-group">
                    <label class="control-label">Product Number</label>
                    <form:input path="code" type="text" class="form-control" />
                </div>
            </div>
            <!-- Product Name-->
            <div class="form-row">
                <div class="col-xs-12 form-group">
                    <label class="control-label">Product Name</label>
                    <form:input path="name" type="text" class="form-control"/>

                </div>
            </div>
            <!-- Product Description -->
            <div class="form-row">
                <div class="col-xs-12 form-group">
                    <label class="control-label">Product Description</label>
                    <form:textarea path="description" class="form-control" />
                </div>
            </div>
            <!-- Price, Cost and  Quantity -->
            <div class="form-row">
                <div class="col-xs-4 form-group required">
                    <label class="control-label">Suggested Retail Price</label>
                    <form:input path="srp" class="form-control" size="4" type="text"/>
                </div>
                <div class="col-xs-4 form-group required">
                    <label class="control-label">Item Cost</label>
                    <form:input    path="cost" class="form-control" type="text"/>
                </div>
                <div class="col-xs-4 form-group required">
                    <label class="control-label">Dealers Price</label>
                    <form:input path="dp" class="form-control" type="text"/>
                </div>
            </div>
            <!-- Button -->
            <div class="form-row">
                <div class="col-md-12 form-group">
                    <button class="form-control btn btn-primary submit-button" type="submit">Add »</button>
                </div>
            </div>
        </form:form>

The Form Backing Object

public class ProductForm {

    private MultipartFile productImage;

    private ProductDTO productDTO;

    ..Setters and getters

}

The controller

@RequestMapping(value="/save",method = RequestMethod.POST,consumes="multipart/form-data")
public ModelAndView saveProductForm(@ModelAttribute("product") ProductForm productForm,BindingResult result){
    productService.saveProduct(productForm.getProductDTO());
    return MavBuilder.render(ADD_PRODUCT_VIEW).toMav();
}

Upon saving, The form backing object eceives null value for the product image and form values that are input, however if I remove the enctype, and select an image for uploading. it's only the form values that are retrieve by the form backing object. what am I missing here?

1 Answer 1

1

Managed to fix my problem, by default spring does not a multi part resolver. So I added one

<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes -->
    <property name="maxUploadSize" value="100000"/>
</bean>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.