gpt4 book ai didi

java - 如何在 XPages 中控制绑定(bind)到作用域变量的数值类型

转载 作者:行者123 更新时间:2023-11-29 03:12:59 26 4
gpt4 key购买 nike

背景:

我有一个带有几个控件的 XPage,这些控件都绑定(bind)到 viewScope 变量。在按下按钮事件时,我运行调用一个 java 方法,该方法将使用 JDBC(无 Hibernate)更新/插入到 DB2 中。

在我的 java 方法中,我有一个变量解析器,它直接获取 viewScope 的句柄以访问数据。在 viewScope Map 中,所有的数据都存储为一个 Object,然后你必须强制转换才能使用 java.sql.PreparedStatement 类的方法。我使用它是因为参数被添加到准备好的语句而不是 SQL。 SQL 在添加依赖项的位置有问号 (?)。 (这样做是为了安全 - 公司政策)。

这是一个简单的例子:

ps = c.prepareStatement(sql);
ps.setString(1, (String) viewScope.get("firstName"));

预处理语句对每种数据类型都有特定的方法。如果数据类型错误,则会出现异常。

问题:

在我的 XPage 上,我有两个数字编辑框。它们是相同的,都使用设置为货币的数字转换器。两者都仅设置为整数。当我尝试更新时,一个存储为 Long,一个存储为 Integer。这是我确定的方式:

System.out.println("NSA object type=" + viewScope.get("manageNSA").getClass().getName());
System.out.println("PNSAC object type=" + viewScope.get("managePNSAC").getClass().getName());

日志文件结果

02/02/2015 05:45:42 PM  HTTP JVM: NSA object type=java.lang.Long
02/02/2015 05:45:42 PM HTTP JVM: PNSAC object type=java.lang.Integer

失败的地方:

ps.setInt(2, (Integer) viewScope.get("manageNSA"));

如果我有这段代码,它在第二个上也会失败。

ps.setLong(6, (Long) viewScope.get("managePNSAC"));

异常痕迹:

java.lang.ClassCastException: java.lang.Long incompatible with java.lang.Integer
java.lang.ClassCastException: java.lang.Integer incompatible with java.lang.Long

我的问题:

我如何在 XPages 中强制数字字段始终是 longs 的集合?或者我如何强制类型为我想要的任何类型,double、long、int 等???

我尝试了什么:

将两者都转换为 Long 是行不通的,这是没有意义的。我知道我的 java 中可以有一个 if 语句,它首先检查类型,然后调用适当的方法,但我宁愿强制 XPages 每次都设置相同的类型。

最佳答案

您始终可以创建一个 Long 值并将其设置为一个作用域变量

viewScope.managePNSAC = java.lang.Long.valueOf(yourValue);

关于java - 如何在 XPages 中控制绑定(bind)到作用域变量的数值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28300342/

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