当前位置: 首页 > 知识库问答 >
问题:

如何传输信息,反对胸腺

闻人宇定
2023-03-14

我正在开发一个应用程序JAVA Spring Boot ThymeLeaf(简单易用的前端,仅供测试)。我有一个简单的域类播放器:

@Entity
@Setter
@Getter
@EqualsAndHashCode(exclude = {"events"})
public class Player {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String playerName;
    private String playerLastName;
    private String playerNickname;
    private String playerEmailAddress;
    private String playerTelephoneNumber;

    @ManyToMany(mappedBy = "players", fetch = FetchType.EAGER)
    private Set<Event> events = new HashSet<>();

    @Enumerated(value = EnumType.STRING)
    private FavouritePosition favouritePosition;
    private LocalDate birthdayDate;

}

我想计算“服务”类的玩家年龄。

问题是:如何将这些信息传输到前端?

控制器方法如下所示:

@RequestMapping("/event/{eventId}/player/{playerId}/show")
    public String showPlayerForSpecificTeam(Model model, @PathVariable String eventId, @PathVariable String playerId) {

        model.addAttribute("player", playerService.getPlayerByEventIdAndPlayerId(Long.valueOf(eventId), Long.valueOf(playerId)));

        return "event/player/showPlayerForSpecifiedEvent";
    }

其中methodgetPlayerByEventandPlayerId(Long.valueOf(eventId)),Long。valueOf(playerId))返回播放器对象(没有年龄,只有生日)。

我不想在数据库中存储每个球员的年龄值,这是显而易见的。

我是否应该向控制器添加另一个:模型。addAttribute();关于年龄的信息?(即使对我来说也不太好)

我正在寻找智能解决方案,遵守干净代码和MVC的规则。如果你能帮我找到好的解决方案,我会很高兴,谢谢你。

编辑:我刚刚创建了class AgeCalculator:

@Component
@Data
public class AgeCalculator {

    public Integer calculateAge(Player player) {
        return Years.yearsBetween(player.getBirthdayDate(), new LocalDate()).getYears();
    }
}

修改后的控制器:

@RequestMapping({"player/{playerId}/show"})
    public String getPlayerById(Model model, @PathVariable String playerId) {

        model.addAttribute("player", playerService.getPlayerById(Long.valueOf(playerId)));
        model.addAttribute("ageCalculator", new AgeCalculator());
        return "event/player/showPlayerById";
    }

在胸腺中,我使用:

<p th:text="${ageCalculator.calculateAge(player)}">Here will be a Player age</p>

但是我收到一个错误:org.thymeleaf.exceptions.TemplateProcessingException:异常评估SpringEL表达式:"ageCalculator.calculate年龄(player.birthday日期)"

我的代码有什么问题?

共有3个答案

孟韬
2023-03-14

好的,谢谢所有的回放。这个问题的完整解决方案。

控制器:

@RequestMapping({"player/{playerId}/show"})
    public String getPlayerById(Model model, @PathVariable String playerId) {

        model.addAttribute("player", playerService.getPlayerById(Long.valueOf(playerId)));
        model.addAttribute("ageCalculator", new AgeCalculator());
        return "event/player/showPlayerById";
    }

年龄计算器:

@Component
@Data
public class AgeCalculator {

    private LocalDate fromStringToLocalDate(String localDateString) {

        DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy");

        return LocalDate.parse(localDateString, inputFormat);
    }

    public int calculateAge(String birthDate) {
        if (birthDate != null) {
            return Period.between(fromStringToLocalDate(birthDate), LocalDate.now()).getYears();
        } else {
            return 0;
        }
    }
}

播放器域类:

@Entity
@Setter
@Getter
@EqualsAndHashCode(exclude = {"events"})
public class Player {
    (...)
    private String birthdayDate;
}

胸腺嘧啶核苷代码:

<p th:text="${ageCalculator.calculateAge(player.birthdayDate)}">Here will be a player age</p>
归俊
2023-03-14

您可以在javascript中添加完整对象或部分对象,并像纯值一样使用它:

<script type="text/javascript" th:inline="javascript">

    /*<![CDATA[*/
    var some_data =/*[[${data}]]*/;
    /*]]>*/

</script>

这是将参数从spring控制器传递到前端的好方法。

祁俊喆
2023-03-14

我的首选方法是向Player类添加一个getAge()方法。然后在前端,它将如下所示:

<span th:text="${player.age}" />

如果不想修改Player类,可以使用calculateAge(LocalDate birthday)方法创建一个helper对象,然后将其添加到模型中并如下调用:

Java:<代码>模型。addAttribute(“helper”,new BirthdayHelper())

胸腺嘧啶核苷:<代码>

 类似资料:
  • 我正试图让我的不和谐机器人对人们的信息做出反应。例如,如果有人说“欢迎”,机器人会对他们的消息做出反应,因为它有“欢迎”这个词,我也会设置这个关键词。我知道如何让机器人用响应来回复消息,但不是反应。

  • 问题内容: 我有两个视图控制器,一个和两个。我从VC一到VC二。在VC 2上,我选择一些存储在数组中的数据。当我按下导航栏上的“返回”按钮时,我想将该阵列发送回VC One。 使用Swift和Storyboards做到这一点的最佳方法是什么? 谢谢! 问题答案: 如果要使用“完成”和“取消”按钮(有点像选择器)来显示模式视图,则在展开segue方法期间获取值可能是最简单的。 假定您要使用导航控制器

  • 问题内容: 我写了一个小小的go脚本,并使用strace跟踪了该脚本,我试图使用netlink协议从内核中获取审核消息,就像auditd一样。 以下是我的旅途中strace的输出脚本- http://paste.ubuntu.com/8272760/ 我试图找到auditd提供给sendto函数的参数。当我在auditd上运行strace时,我得到以下输出 当我追踪我的go文件时,我得到以下输出。

  • 数据:“{\”数据\“:[\”124“,\”611“]}”,Lasteventid:“”} 是否可以只抓取,因为否则客户端在反序列化方面会出现问题。

  • 使用HTTP响应头传递信息是一件非常“酷”的事。但遗憾的是,在传递中文时,会出现乱码问题。其实要解决这个问题也非常简单,只需要对要传输的中文进行编码,然后在接收它们的客户端再对其进行解码即可。 例子 : 用HTTP响应消息头传输中文信息 1. 实例说明 在本程序中通过HTTP响应消息头分别传输英文消息、中文消息和被编码后的中文消息(对中文消息的编码可以采用多种方式,在本例中采用了URL编码的方式,

  • 第一个问题: 我用npm模块(Jhipster生成器)生成了一个Jhipster应用程序。应用程序运行良好。我随机取了一个模板文件:例如设置。html内容的一部分是: 我希望用胸腺叶国际化信息替换它,例如: 因此,我将密钥添加到“messages\u en”(和我创建的“messages\u fr”)文件中;位于src\main\resources\i18n\messages\u xx。属性 那么