• springboot


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 ayziba-&& 2024-06-01 19:50 采纳率: 30% 浏览 2 首页/ 后端 / springboot spring boot 2024-06-01 19:46:35.677 ERROR 21628 --- [nio-8080-exec-7] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-7] Exception processing template "schoolmatesList": An error happened during template parsing (template: "class path resource [templates/schoolmatesList.html]")springboot报以上错误怎么解决,实在时找不到错误 package soft3.mngsys.controller; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import soft3.mngsys.model.SchoolMate; import soft3.mngsys.service.SchoolMateService; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.net.URLEncoder; import java.util.Calendar; import java.util.List; @Controller public class FileController { private Model getCopyRight(Model model){ model.addAttribute("currentYear", Calendar.getInstance().get(Calendar.YEAR)); model.addAttribute("author","则巴"); return model; } //向文件上传页面跳转 @GetMapping("/toUpload") public String fileUpload(Model model){ getCopyRight(model); return "upload"; } //文件上传管理 @PostMapping("/uploadFile") public String uploadFile(MultipartFile[] fileUpload, Model model){ //默认文件上传成功,并返回状态信息 model.addAttribute("uploadStatus","上传成功!"); for (MultipartFile file : fileUpload){ //获取文件名以及后缀名 String fileName = file.getOriginalFilename(); //指定上传文件本地存储目录,不存在则需要提前创建 String dirPath = "E:/file/"; File filePath = new File(dirPath); if (!filePath.exists()){ filePath.mkdir(); } try { file.transferTo(new File(dirPath+fileName)); } catch (Exception e){ e.printStackTrace(); //上传失败,返回失败信息 model.addAttribute("uploadStatus","上传失败:" + e.getMessage()); } } //携带上传状态信息回调到文件上传页面 getCopyRight(model); return "upload"; } @GetMapping("file_download") public String fileDownload(Model model){ getCopyRight(model); return "download"; } @GetMapping("/downloadFile") public ResponseEntity downloadFile(String filename, HttpServletRequest request) throws Exception{ //指定被下载文件的路径 String dirPath = "E:/file/"; //创建文件对象 File file = new File(dirPath + File.separator + filename); //设置响应头 HttpHeaders headers = new HttpHeaders(); //通知浏览器以下载方式打开(下载前对文件名进行转码,防止中文文件乱码) filename = getFilename(request,filename); headers.setContentDispositionFormData("attachment",filename); //以流的形式下载文件 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); try { //添加commons-io依赖 //使用springmvc框架的ResponseEntity随心封装返回数据 return new ResponseEntity<>(FileUtils.readFileToByteArray(file),headers,HttpStatus.OK); }catch (Exception e){ e.printStackTrace(); return new ResponseEntity(e.getMessage().getBytes(), HttpStatus.EXPECTATION_FAILED); } } //根据浏览器的不同设置,返回编码后的文件名 private String getFilename(HttpServletRequest request,String filename) throws Exception{ //IE不同版本User-Agent中出现的关键字 String[] IEBrowserKeyWords = {"MSIE","Trident","Edge"}; //获取请求的代理信息 String userAgent = request.getHeader("User-Agent"); for (String keyWord : IEBrowserKeyWords){ if (userAgent.contains(keyWord)){ //IE内核浏览器,统一为UTF-8编码显示 return URLEncoder.encode(filename,"UTF-8").replace("+",""); } } //火狐等其他浏览器统一为ISO-8859-1编码 return new String(filename.getBytes("UTF-8"),"ISO-8859-1"); } @Autowired private SchoolMateService schoolMateServiceImpl; @GetMapping("/all_page") public String all_page(Model model){ getCopyRight(model); List UserList = schoolMateServiceImpl.contTable_Service(); model.addAttribute("Result",UserList); return "schoolmatesList"; } // public String all_page(Model model){ // List schoolMateList = schoolMateServiceImpl.findSchoolMatesList(); // getCopyRight(model); // model.addAttribute("Result",schoolMateList); // return "schoolmatesList"; // } // @GetMapping("/countNativePlace") // @ResponseBody // public List countNativePlace(Model model){ // getCopyRight(model); // List schoolMateList = schoolMateService.nativePlaceChartService(); // model.addAttribute("Result",schoolMateList); // System.out.println(schoolMateList); // return schoolMateList; // } } package soft3.mngsys.mapper; import org.apache.ibatis.annotations.Mapper; import soft3.mngsys.model.SchoolMate; import java.util.List; @Mapper public interface SchoolMatesMapper { List contTable(); } package soft3.mngsys.service; import soft3.mngsys.model.SchoolMate; import java.util.List; public interface SchoolMateService { List contTable_Service(); //数据分页 // public List findSchoolMatesList(); } package soft3.mngsys.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import soft3.mngsys.mapper.SchoolMatesMapper; import soft3.mngsys.model.SchoolMate; import javax.transaction.Transactional; import java.util.List; @Service @Transactional public class SchoolMateServiceImpl implements SchoolMateService{ @Autowired private SchoolMatesMapper schoolMatesMapper; @Override public List contTable_Service() { return schoolMatesMapper.contTable(); } // @Override //重写方法 // public List findUserInfoList_Service(){ // return userInfoMapper.findUserInfoList(); // } } package soft3.mngsys.model; import java.util.Date; public class SchoolMate { //Generate get and set and toString private Integer id; private String username; private String sex; private Date birthday; private String nativeplace; private String classNo; private String job; private String company; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getNativeplace() { return nativeplace; } public void setNativeplace(String nativeplace) { this.nativeplace = nativeplace; } public String getClassNo() { return classNo; } public void setClassNo(String classNo) { this.classNo = classNo; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } @Override public String toString() { return "SchoolMate{" + "id=" + id + ", username='" + username + '\'' + ", sex='" + sex + '\'' + ", birthday=" + birthday + ", nativeplace='" + nativeplace + '\'' + ", classNo='" + classNo + '\'' + ", job='" + job + '\'' + ", company='" + company + '\'' + '}'; } } 校友录列表
    编号 姓名 性别 出生日期 籍贯 班级 职务 公司
    展开全部 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    3条回答 默认 最新

    • 关注

      晚上好🌙🌙🌙
      本答案参考ChatGPT-3.5

      **问题:**Spring Boot项目中,访问templates/schoolmatesList.html模板时抛出An error happened during template parsing错误。

      **原因:**这种错误通常是因为Thymeleaf解析模板时遇到问题,可能是模板语法错误、文件路径问题或者是资源加载配置不正确。

      解决方案:

      1. 检查模板语法

        • 检查templates/schoolmatesList.html文件中的HTML和Thymeleaf语法是否正确。
        • 确保模板引用的变量或属性在模型(Model)中存在。
      2. 确保资源路径正确

        • 检查classpath前缀是否正确,templates目录是否在项目的类路径(classpath resources)下。
        • 如果是相对路径,确保路径是从@Controller类所在的包开始的。
      3. 检查Spring Boot配置

        • application.propertiesapplication.yml中,确认spring.thymeleaf.prefixspring.thymeleaf.suffix配置是否正确。这两个属性分别定义了模板文件的前缀和后缀。
        spring:
          thymeleaf:
            prefix: classpath:/templates/
            suffix: .html
        
      4. 处理静态资源映射

        • 如果模板引用了静态资源(如图片、CSS等),确保在web.xmlSpring MVC配置中已经正确配置了静态资源的访问。
      5. 清理缓存

        • 有时候,由于缓存问题可能导致模板解析失败,尝试清除IDE或者服务器的缓存。
      6. 日志排查

        • 查看控制台输出的详细错误信息,这可能包含关于具体错误位置和原因的线索。

      如果以上步骤都无法解决问题,可能需要查看具体的错误堆栈信息,或者将错误报告分享出来以便进一步分析。

      展开全部

      评论 编辑记录
    • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-01 19:50
      关注

      引自免费微信小程序:皆我百晓生

      从您提供的信息来看,Spring Boot 报告了一个 Thymeleaf 模板解析错误,这通常意味着在处理 schoolmatesList.html 这个模板时发生了异常。为了定位问题,我们需要查看具体的错误堆栈跟踪,它会提供关于错误发生的具体位置和原因的详细信息。

      然而,在您提供的代码片段中并没有看到引发错误的确切部分。通常,Thymeleaf 错误可能由以下几种情况引起:

      1. 拼写错误:在 HTML 中使用 Thymeleaf 的语法时,可能会有标签或属性拼写错误。
      2. 数据绑定错误:尝试访问的对象属性不存在,或者数据类型不匹配。
      3. 表达式错误:在表达式中使用了无效的函数、运算符或变量。
      4. 文件引用错误:CSS、JavaScript 或其他资源未正确引用。

      由于您没有提供详细的错误消息,我将基于您的代码给出一些常见的检查点:

      1. 检查 schoolmatesList.html 中的所有 Thymeleaf 标签,确保它们的语法是正确的,例如 th: 前缀是否正确使用,以及是否有遗漏或多余的闭合标签。
      2. 确保在 Java 代码中传递给 Thymeleaf 模板的数据模型(Model)中,包含名为 Result 的属性,并且它是 List 类型。可以在 all_page 方法中打印 UserList 来确认这一点:
      @Override
      public String all_page(Model model) {
          getCopyRight(model);
          List UserList = schoolMateServiceImpl.contTable_Service();
          System.out.println("UserList: " + UserList); // 添加这行以输出数据
          model.addAttribute("Result", UserList);
          return "schoolmatesList";
      }
      
      1. 检查 SchoolMate 类中的属性名称与模板中使用的属性名称一致。确保模板中的 th:text 属性值(如 ${User.id})与 SchoolMate 类中的相应字段相匹配。

      如果您能提供更详细的错误信息或者错误堆栈,我可以为您提供更精确的解决方案。同时,也建议您使用 IDE 或者服务器日志来查看完整的错误信息,这将有助于快速定位问题所在。

      评论 编辑记录
    • 阿里嘎多学长 2024-06-01 19:50
      关注

      以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


      错误信息提示Thymeleaf模板引擎在解析"schoolmatesList"模板时出现了异常。根据你提供的代码和错误信息,这里有几个可能的原因和相应的解决方法:

      1. 检查模板文件是否存在: 确保你的项目中有一个名为schoolmatesList.html的Thymeleaf模板文件,并且它位于src/main/resources/templates目录下。

      2. 检查模板语法: 检查schoolmatesList.html文件中的Thymeleaf表达式是否正确。例如,确保所有的th:属性都被正确使用,没有遗漏或者错误的属性。

      3. 检查模型数据: 确保传递给模板的模型数据(Result)是正确的,并且没有抛出异常。如果contTable_Service()方法或其依赖的服务抛出异常,它可能会导致模板解析失败。

      4. 检查Thymeleaf配置: 查看你的Spring Boot配置,确保Thymeleaf作为模板引擎被正确配置。

      5. 检查日志输出: 错误信息通常会包含更详细的堆栈跟踪信息,这有助于确定问题的具体位置。检查Spring Boot的日志输出,查看是否有更详细的错误信息。

      6. 检查依赖和版本: 确保你的项目中使用的Thymeleaf和Spring Boot的版本是兼容的,并且所有必要的依赖都已经添加到项目的pom.xmlbuild.gradle文件中。

      7. 清理和重建项目: 有时候,简单的清理和重建项目可以解决一些看似复杂的问题。

      8. 检查IDE和构建工具: 如果你使用的是IDE(如IntelliJ IDEA或Eclipse),尝试重启IDE或重新导入项目。如果你使用的是构建工具(如Maven或Gradle),尝试清理和重新构建项目。

      如果以上方法都不能解决问题,你可以尝试以下步骤来进一步诊断问题:

      • 启用详细日志:在Spring Boot的配置文件中启用详细日志,这样可以获得更多关于错误的信息。
      • 逐步调试:使用IDE的调试功能逐步执行代码,查看在哪个点上出现了问题。
      • 简化模板:尝试创建一个非常简单的Thymeleaf模板,只包含基本的HTML,然后逐步添加内容,以确定是哪个部分导致了问题。

      至于参考资料,你可以查看Spring Boot和Thymeleaf的官方文档,这些文档通常会提供配置和使用的最佳实践:

      希望这些信息能帮助你解决问题!如果需要更多帮助,请提供更详细的错误信息或日志输出。

      展开全部

      评论 编辑记录
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    Spring之IoC
    python实现线性插值
    CSP-J1 CSP-S1 信奥 第1轮 初赛 数据分析 成绩及分数线汇总
    云原生应用安全
    ruoyi-vue前端数据字典值引用与回显(列表中回显,多选框回显)
    设计模式面试指南
    visual studio下载安装
    C基本语法
    详解配置代理和IP设置的含义
    Android开发中用于方便的记录当前与开始时间的差值
  • 原文地址:https://ask.csdn.net/questions/8112673