Spring Can';无法在控制器中选择选项
我有一个表单可以在选择选项中列出bucket,它在选择bucket和file之后将文件上传到bucket,但是我无法在我的控制器中获取所选bucket,文件夹总是返回空字符串,虽然multipartfile没有问题,但我真的想知道为什么! 这周我一直在谷歌上搜索,但没有找到我需要的结果! 我对thymeleaf非常陌生,即使是在spring框架中:( 请帮我解决这个简单的问题:) html文件的一部分,如下所示:Spring Can';无法在控制器中选择选项,spring,select,amazon-s3,controller,thymeleaf,Spring,Select,Amazon S3,Controller,Thymeleaf,我有一个表单可以在选择选项中列出bucket,它在选择bucket和file之后将文件上传到bucket,但是我无法在我的控制器中获取所选bucket,文件夹总是返回空字符串,虽然multipartfile没有问题,但我真的想知道为什么! 这周我一直在谷歌上搜索,但没有找到我需要的结果! 我对thymeleaf非常陌生,即使是在spring框架中:( 请帮我解决这个简单的问题:) html文件的一部分,如下所示: <form role="form" enctype="multipart/f
<form role="form" enctype="multipart/form-data" action="#" th:object="${folder}" th:action="@{'/drill/skin/upload'}" method="POST">
<div class="form-group">
<label class="form-control-static">Select Bucket</label>
<select class="form-control" th:field="${folder}">
<option th:each="bucket : ${buckets}" th:value="${bucket.name}" th:text="${bucket.name}">bucket</option>
</select>
</div>
<label class="form-control-static" for="inputSuccess">Select Upload File</label>
<div class="form-group">
<input type="file" class="form-control" name="uploadFile"/>
</div>
<div class="form-group">
<button class="btn btn-primary center-block" type="submit">Upload</button>
</div>
</form>
选择铲斗
水桶
选择上载文件
上传
控制器如下:
@RequestMapping(value="/", method=RequestMethod.GET)
public String provideUploadInfo(Model model) {
List<Bucket> buckets = s3Service.listBuckets();
model.addAttribute("buckets", buckets);
model.addAttribute("folder", "com.smartstudy");
return "index";
}
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String handleFileUpload(
@ModelAttribute("folder") String folder,
@RequestParam("uploadFile") MultipartFile uploadFile, Model model) {
log.info("Bucket: " + folder + ", uploadFile: " + uploadFile.getOriginalFilename());
if (!uploadFile.isEmpty() && !folder.isEmpty()) {
return s3Service.upload(uploadFile, folder);
}
return "index";
}
@RequestMapping(value=“/”,method=RequestMethod.GET)
公共字符串provideUploadInfo(模型){
List bucket=s3Service.listbakes();
model.addAttribute(“bucket”,bucket);
model.addAttribute(“文件夹”、“com.smartstudy”);
返回“索引”;
}
@RequestMapping(value=“/upload”,method=RequestMethod.POST)
公共字符串handleFileUpload(
@ModelAttribute(“文件夹”)字符串文件夹,
@RequestParam(“上传文件”)多部分文件上传文件,模型{
log.info(“Bucket:+folder+”,uploadFile:+uploadFile.getOriginalFilename());
如果(!uploadFile.isEmpty()&&!folder.isEmpty()){
返回s3Service.upload(上传文件、文件夹);
}
返回“索引”;
}
您的代码中有几个问题
理想情况下,整个表单应该封装在一个表单支持对象中。在您的例子中,创建一个Java对象,将文件夹和文件包装在一起
class BucketFileForm{
private MultipartFile uploadFile;
private String folder;
public String getFolder() {
return folder;
}
public void setFolder(String folder) {
this.folder = folder;
}
public MultipartFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(MultipartFile uploadFile) {
this.uploadFile = uploadFile;
}
}
使此对象在模型中可用,以便可以在视图中访问它
@RequestMapping(value="/", method=RequestMethod.GET)
public String provideUploadInfo(Model model) {
List<Bucket> buckets = s3Service.listBuckets();
model.addAttribute("buckets", buckets);
//replace this
//model.addAttribute("folder", "com.smartstudy");
//with
BucketFileForm bucketFileForm = new BucketFileForm();
bucketFileForm.setFolder("com.smartstudy");
model.addAttribute("bucketFileForm", bucketFileForm);
return "index";
}
代码中有几个问题 理想情况下,整个表单应该封装在一个表单支持对象中。在您的例子中,创建一个Java对象,将文件夹和文件包装在一起
class BucketFileForm{
private MultipartFile uploadFile;
private String folder;
public String getFolder() {
return folder;
}
public void setFolder(String folder) {
this.folder = folder;
}
public MultipartFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(MultipartFile uploadFile) {
this.uploadFile = uploadFile;
}
}
使此对象在模型中可用,以便可以在视图中访问它
@RequestMapping(value="/", method=RequestMethod.GET)
public String provideUploadInfo(Model model) {
List<Bucket> buckets = s3Service.listBuckets();
model.addAttribute("buckets", buckets);
//replace this
//model.addAttribute("folder", "com.smartstudy");
//with
BucketFileForm bucketFileForm = new BucketFileForm();
bucketFileForm.setFolder("com.smartstudy");
model.addAttribute("bucketFileForm", bucketFileForm);
return "index";
}
伟大的你是对的,一个表单和一个表单类做任何事情都很简单!伟大的你是对的,一个表单和一个表单类做任何事情都很简单!