解析模板" /index.html"时出错,模板可能不存在或任何已配置的模板解析器可能无法访问

时间:2017-09-25 00:47:59

标签: spring-boot

我正在尝试使用spring-boot解析一个简单的index.html文件。如果我放入localhost:8080 / index.html它会解析,或者如果我没有,我会得到White Error Page。

我把它发布在GIT上;这是一个非常简单的应用:Git Hub Link

问题似乎是模型:

enter image description here

表单模型:

@Entity
@Table(name="applicant")
public class FormModel {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    @Email
    private String email;
    @Size(min=2, max=200)
    private String description;

    public String getName() {
        return name;
    }

    @Required
    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    @Required
    public void setEmail(String email) {
        this.email = email;
    }

    public String getDescription() {
        return description;
    }

    @Required
    public void setDescription(String description) {
        this.description = description;
    }
}

家庭控制器:

@RestController
public class Home {

    @RequestMapping(value = "/", method = {RequestMethod.GET, RequestMethod.POST} )
    public ModelAndView index(){

        ModelAndView modelAndView = new ModelAndView("/index.html");

        return modelAndView;
    }

}

1 个答案:

答案 0 :(得分:3)

查看源代码后

标题问题的答案是:

  1. 您使用的是Thymeleaf,它可以解析模板index,但不能解析/index.html。来自Thymeleaf的TemplateResolver负责加载HTML标记。默认情况下,它会将index等模板名称转换为classpath:/templates/index.htmlWEB-INF/templates/index.html等资源名称。

    这样的事情应该有效:

    ModelAndView modelAndView = new ModelAndView("index");

  2. 但它不会对你有太多帮助,因为你还有其他一些工作要做。

    1. 图片显示您使用@作为对象,但您应该使用$,请查看docs

    2. Thymeleaf实际上使用xml格式,所以你不能使用你的html,只需在其中添加一些百里香形式。您需要为每个<hr/><br/>添加结束标记,依此类推。

    3. 您使用../static/js/some.js之类的html链接,但您应该使用/js/some.js获取更多信息,可以谷歌如何解析静态文件

    4. 以下是包含一些修复的回购:https://github.com/varren/Portfolio