【问题标题】:How to Add two Number using Springboot thymeleaf如何使用 Springboot thymeleaf 添加两个数字
【发布时间】:2021-01-20 06:18:27
【问题描述】:

我是 Spring Boot thymeleaf 形式的初学者。我想添加两个数字来计算和显示总数。我不知道如何计算值。我可以将值发布到 @PostMapping("/reg_success") 那么我如何计算并在 reg_success.html 页面上显示总数。到目前为止我尝试了什么,我附在下面。

我得到了错误

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/index.html]")
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) ~[thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) [thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) [thymeleaf-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:366) [thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:190) [thymeleaf-spring5-3.0.12.RELEASE.jar:3.0.12.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1393) [spring-webmvc-5.3.3.jar:5.3.3]
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1138) [spring-webmvc-5.3.3.jar:5.3.3]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1077) [spring-webmvc-5.3.3.jar:5.3.3]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) [spring-webmvc-5.3.3.jar:5.3.3]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.3.jar:5.3.3]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) [spring-webmvc-5.3.3.jar:5.3.3]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) [tomcat-embed-core-9.0.41.jar:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.3.jar:5.3.3]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) [tomcat-embed-core-9.0.41.jar:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.3.jar:5.3.3]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar:5.3.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.3.jar:5.3.3]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar:5.3.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.3.jar:5.3.3]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar:5.3.3]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [tomcat-embed-core-9.0.41.jar:9.0.41]
    at 

StudentContoller

   @Controller
public class StudentContoller 
    {
    @GetMapping("/index")
    public String sendForm(Model model) {
        model.addAttribute("student", new Student());
        return "index";
    }

    @PostMapping("/reg_success")
    public String processForm(@ModelAttribute Student student, BindingResult result, Model model)
    {
        model.addAttribute("student", student);
        return "reg_success";
    }
 
}

Student.java

  public class Student 
{
     private int num1;
     private int num2;
     
    public int getNum1() 
    {
        return num1;
    }
    public void setNum1(int num1) 
    {
        this.num1 = num1;
    }
    public int getNum2() 
    {
        return num2;
    }
    public void setNum2(int num2) 
    {
        this.num2 = num2;
    }
    
    public int getTotal() {
        return num1 + num2;
    }
}

index.html

  <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Add User</h1>

<form th:action="@{/reg_success}" th:object="${student}" method="post">
        Studnt ID: <input type="text" id="id" name="id" value="0">
    </p>
    
   <p>
    Num1 <input type="text" id="num1" th:field="*{num1}" name="num1" value="">
</p>
<p>
    Num2 <input type="text" id="num2" th:field="*{num2}" name="num2" value="">
</p> 
    
    <p>
        <input type="submit" value="Submit"/> <input type="reset" value="Reset">
    </p>
</form>
</body>
</html>

reg_success.html

    <!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Show message</title>
    <meta charset="UTF-8">
</head>
<body>

<h1>Result</h1>

<p th:text="${student.getTotal()}"></p>  





</body>
</html>

【问题讨论】:

  • 请看我更新的答案,您必须在 sendForm 方法中将控制器更新为 model.addAttribute("student", new Student());
  • 我试过什么我更新了上面的代码仍然出现错误先生
  • 你也可以发布错误吗?
  • 如果有其他使用 spring 服务的添加它先生,这对我有帮助,谢谢
  • 我需要先看到错误才能解决最初的问题

标签: java spring spring-boot


【解决方案1】:

请更新您的控制器

@GetMapping("/index")
public String sendForm(Model model) {
    model.addAttribute("student", new Student());
    return "index";
}

请从 index.html

更改此代码
<p>
    Num1 <input type="text" id="num1" name="num1" value="">
</p>
<p>
    Num2 <input type="text" id="num2" name="num2" value="">
</p>

到:

<p>
    Num1 <input type="text" id="num1" th:field="*{num1}" name="num1" value="">
</p>
<p>
    Num2 <input type="text" id="num2" th:field="*{num2}" name="num2" value="">
</p> 

将此方法添加到您的学生:

public int getTotal() {
    return num1 + num2;
}

最后更新您的 reg_success.html

<p th:text="${student.getTotal()}"></p>  

请注意,此解决方案是您的问题所独有的,将来您可能希望创建服务,尤其是在您必须持久化实体时。

【讨论】:

  • org.thymeleaf.exceptions.TemplateInputException: 模板解析期间发生错误(模板:“类路径资源 [templates/index.html]”)我在更改时遇到错误
  • 我会更新我的答案,我想我知道为什么
  • 先生,我可以知道如何添加弹簧服务来做到这一点
  • 你现在有 17 名声望,我赞成你的问题。你现在可以为答案投票了:)
  • 好的,我做到了,我可能知道如何用 spring 服务做同样的例子来做到这一点
【解决方案2】:

你可以像这样对两个变量求和。

<p th:text="${student.num1 + student.num2}"></p>  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2016-01-15
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多