gpt4 book ai didi

java - 如何在 JSPX 中处理 Optionals?

转载 作者:搜寻专家 更新时间:2023-11-01 00:54:33 25 4
gpt4 key购买 nike

我们有几个具有可为空字段的域对象。我们已经读到 hibernate 需要“原始”对象才能正确映射它,所以我们的 getter 返回可选值。我们的域对象如下所示:

public class User {

private String firstName;

private User boss;

public Optional<String> getFirstName(){
....
}

public Optional<User> getBoss() {
...
}
}

但是现在我们在解析/绑定(bind) .jspx 文件中的这些字段时遇到了问题。 (显示以及表单输入字段。)对于原始类型和字符串,我们可以通过定义自定义 OptionalToStringConverter 来绕过这一点。

还有一个问题是对其他领域对象的可空引用。

我们考虑了几种选择,但对其中任何一种都不满意:

  • 为所有域对象和类型定义自定义转换器(会导致许多转换器并且似乎不适用于输入字段)
  • 在每个域对象上定义可选和非可选 getter(1. 重复代码,2. 我们想清楚地指示可为 null 的字段,3. 以不同方式访问可选和非可选字段感觉不干净)
  • 定义返回“原始”值或 null(重复代码)的“显示命令”
  • 定义处理可选的自定义 tagx(当域对象变为非可选时,我们将不得不更改 tagx)

我们想知道是否有一种漂亮而干净的方法来解析 jspx 中的可选值。

最佳答案

在表单绑定(bind)方面,Spring 处理得很好:例如它将下面的第一个值映射到 Optional.empty() ,第二个和第三个到适当的Optional<Boolean> .

<form:select path="anOptionalBoolean">
<form:option value="" label="Not Specified"/>
<form:option value="true" label="Yes"/>
<form:option value="false" label="No"/>
</form:select>

在显示值方面,我没有发现比使用 .get 更好的方法了和 .present EL 表达式中的等。它确实会产生相当繁琐的代码。

关于java - 如何在 JSPX 中处理 Optionals?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45732562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com