如何将随机数从Java类传递到html文件

如何将随机数从Java类传递到html文件,java,spring-boot,spring-mvc,thymeleaf,Java,Spring Boot,Spring Mvc,Thymeleaf,我试图通过thymeleaf学习更多spring框架,但现在我想在一个类中生成一个随机数,然后传递到html文件以将其打印出来。我做得对吗?所以我有一个类编号控制器,在这里我生成我的随机编号: public class numberController { public int randomSkaicius() { Random rand = new Random(); int skaicius = (int) (Math.random() * 50 +

我试图通过thymeleaf学习更多spring框架,但现在我想在一个类中生成一个随机数,然后传递到html文件以将其打印出来。我做得对吗?所以我有一个类编号控制器,在这里我生成我的随机编号:

public class numberController {
    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
下面是我的HTML代码:

<div class="container">
    <h5>Privaloma informacija</h5>
    <div>
        <form action="#" th:action="@{/home}" th:object="${galerija}" method="GET">
            <label>Nuotraukos ID: + ${numberController.randomSkaicius}</label>
        </form>
    </div>
</div>

信息私隐藻
Nuotraukos ID:+${numberController.randomskaciius}

首先,您必须确保您的Thymeleaf模板位于正确的位置(src/main/resources/templates),并记住其名称(例如my page.html

下一步是,您必须使用
@controller
注释正确地告诉Spring
NumberController
实际上是一个控制器:

@Controller
public class NumberController {
    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
之后,您必须告诉Spring哪个URL应该解析为特定的控制器方法,该方法返回一个模型+视图。您可以使用
@GetMapping
注释来实现这一点,例如:

@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        // TODO: Implementation
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        return new ModelAndView("my-page", "randomSkaicius", randomSkaicius());
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
在本例中,我们告诉Spring,只要有人请求,就会触发
getMyPage()
方法

在该方法中,我们必须返回一个
ModelAndView
对象,它定义了一些东西:

  • 视图的名称,在您的例子中,是Thymeleaf模板的名称,意思是
    my page
    (您必须删除扩展部分)
  • 模型的名称,您可以自由选择,例如
    randomskaciius
  • 模型的实际值,即
    randomskaciius()
    返回的值
例如:

@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        // TODO: Implementation
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
@Controller
public class NumberController {
    @GetMapping("/my/page")
    public ModelAndView getMyPage() {
        return new ModelAndView("my-page", "randomSkaicius", randomSkaicius());
    }

    public int randomSkaicius() {
        Random rand = new Random();
        int skaicius = (int) (Math.random() * 50 + 1);
        return skaicius;
    }
}
既然您已经定义了这个模型,那么您必须回到您的Thymeleaf模板,并且无论您想在哪里使用该模型,您都必须正确地引用它。我们在控制器中将其命名为“randomSkaicius”,因此我们可以在我们的Thymeleaf模板中放置类似的内容:

<span th:text="${randomSkaicius}"></span>


我们使用
th:text
告诉Thymeleaf将该部分解析为该元素的内部文本。然后,我们使用
${randomskaciius}
引用了我们之前在控制器中定义的模型。

我不熟悉thymeleaf,但是
randomskaciius()
是一个方法,你不也必须在html中调用该方法吗?你的确切意思是调用吗?@HenrikasB像
${numberController.randomskaciius>那样调用该方法()}
哦,对了。我试过这种方法,但在我的兄弟身上仍然看不到一个数字。您是在
numberController
中使用@Controller和@RequestMapping还是在Spring MVC中使用任何基于XML的配置?哇,这是一个多么好的解释啊..谢谢。