在spring mvc

时间:2017-08-23 06:18:12

标签: java html spring forms jsp

我的jsp页面中有一些输入字段,可以动态创建或删除字段。所以我必须将输入字段映射到spring mvc的@ModelAttributes。但我不知道如何映射输入字段。

我想提交一份由以下内容组成的表格:

<form enctype="multipart/form-data">
    <!-- code omitted -->

    <div>
        <input type="text" name="content">
        <input type="file" name="file">
    </div>
    <div>
        <input type="text" name="content">
        <input type="file" name="file">
    </div>
    <div>
        <input type="text" name="content">
        <input type="file" name="file">
    </div>
</form>

这些字段应该引导到Java classe(@ModelAttribute):

package com.musicovery12.cookingstep.web.command;

import java.util.Arrays;
import java.util.List;


public class AddRecipeCommand {

    private String mainImageUrl;
    private String foodName;
    private String kcal;
    private String ingredients;
    private String foodDescription;

    // I do not know how to map into this field.
    private List<RecipeStep> recipeSteps;

    private String videoUrl;


    public String getMainImageUrl() {
        return mainImageUrl;
    }
    public void setMainImageUrl(String mainImageUrl) {
        this.mainImageUrl = mainImageUrl;
    }
    public String getFoodName() {
        return foodName;
    }
    public void setFoodName(String foodName) {
        this.foodName = foodName;
    }
    public String getKcal() {
        return kcal;
    }
    public void setKcal(String kcal) {
        this.kcal = kcal;
    }
    public String getIngredients() {
        return ingredients;
    }
    public void setIngredients(String ingredients) {
        this.ingredients = ingredients;
    }
    public String getFoodDescription() {
        return foodDescription;
    }
    public void setFoodDescription(String foodDescription) {
        this.foodDescription = foodDescription;
    }
    public List<RecipeStep> getRecipeSteps() {
        return recipeSteps;
    }
    public void setRecipeSteps(List<RecipeStep> recipeSteps) {
        this.recipeSteps = recipeSteps;
    }
    public String getVideoUrl() {
        return videoUrl;
    }
    public void setVideoUrl(String videoUrl) {
        this.videoUrl = videoUrl;
    }
    @Override
    public String toString() {
        return "AddRecipeCommand [mainImageUrl=" + mainImageUrl + ", foodName="
                + foodName + ", kcal=" + kcal + ", ingredients=" + ingredients
                + ", foodDescription=" + foodDescription + ", recipeSteps="
                + recipeSteps + ", videoUrl=" + videoUrl + "]";
    }
}

该命令类具有非基本类型的属性。它的RecipeStep:

package com.musicovery12.cookingstep.web.command;

import org.springframework.web.multipart.MultipartFile;

public class RecipeStep {
    private String content;
    private MultipartFile image;

    public RecipeStep() {}

    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public MultipartFile getImage() {
        return image;
    }
    public void setImage(MultipartFile image) {
        this.image = image;
    }

    @Override
    public String toString() {
        return "RecipeStep [content=" + content + ", image=" + image + "]";
    }


}

所以我的问题是, 如何将表单的输入字段映射到上面的java类中? 是否可以通过更改输入字段的名称?那怎么样?

1 个答案:

答案 0 :(得分:0)

公共类MultipleFileUploadForm {

private List<MultipartFile> files;

    public List<MultipartFile> getFiles() {
        return files;
    }

    public void setFiles(List<MultipartFile> files) {
        this.files = files;
    } 

}

public @ResponseBody String handleFileUpload(@ModelAttribute(“multipleFileUploadForm”)MultipleFileUploadForm multipleFileUploadForm){

}

在控制器中添加@ModelAttribute