gpt4 book ai didi

java - Kotlin、Java、JSTL boolean 互操作

转载 作者:行者123 更新时间:2023-12-02 11:46:24 25 4
gpt4 key购买 nike

我在 JSTL 和 Kotlin 互操作方面遇到问题。

我有一个特殊的 kotlin 类,有 2 个 kotlin boolean 字段。

class Foo {
var isBar1 : Boolean = false
var isBar2 : Boolean = false

constructor()

constructor(isBar1: Boolean, isBar2: Boolean) {
this.isBar1 = isBar1
this.isBar2 = isBar2
}
}

我必须从 jsp 访问这两个字段,我正在按以下方式执行操作:

<c:choose>
<c:when test="${foo.isBar1== true}">
<p>Print something</p>
</c:when>

<c:when test="${foo.isBar1== false}">
<p>Print something else</p>
</c:when>
</c:choose>

isBar2 完全相同

问题是,当我运行这段代码时我遇到了

java.lang.NoSuchMethodError: packagedeclaration.setBar1(Ljava/lang/Boolean;)V

如果我尝试编写以下函数:

fun getBar1(): Boolean {
return this.isBar1
}

fun setBar1(isBar1: Boolean): Any {
this.isBar1= isActive
return Any()
}

fun getBar2(): Boolean {
return this.isBar2
}

fun setBar2(isBar2: Boolean): Any {
this.isBar2= isBar2
return Any()
}

它会带我去“javax.el.PropertyNotFoundException:在类型 [packagedeclaration.foo] 上找不到属性 [isBar2]”

我尝试将字段设置为私有(private),但没有帮助。Java boolean 值作为参数似乎无法传递,因为 IntelliJ 不断地用不同的错误轰炸我。

这是我的想法:JSTL 尝试使用 java boolean 参数和返回类型来访问 java getters/setters。jSTL 寻找以 java 命名约定命名的方法,因此 getBar1 和 setBar1 但 kotlin 生成 isBar1 和 setBar1

根据此 kotlin 引用页,Java - Kotlin boolean 值互操作是 boolean 值: Kotlin- Java interop reference

你知道如何摆脱这个问题吗?

最佳答案

在 boolean 值中,EL 也会查找表达式 ${foo.bar1}isBar1() getter 方法。可能您有 JSTL lib 问题。请删除页面顶部的所有 JSTL 库和标记库定义。只需尝试使用 EL ${foo.bar1} 来检查它是否被正确调用。

关于java - Kotlin、Java、JSTL boolean 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170335/

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