Kotlin,Java,JSTL布尔互操作

我有JSTL和Kotlin互操作的问题。

我有一个2 kotlin布尔字段这个特殊的kotlin类。

class Foo { var isBar1 : Boolean = false var isBar2 : Boolean = false constructor() constructor(isBar1: Boolean, isBar2: Boolean) { this.isBar1 = isBar1 this.isBar2 = isBar2 } } 

我必须通过以下方式访问jsp中的这两个字段:

   

Print something

Print something else

和isBar2完全相同

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

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

如果我尝试写下列function:

 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:Property [isBar2] not found on type [packagedeclaration.foo]”

我试图将字段设置为私人,但没有帮助。 作为参数的Java布尔似乎不可能通过,因为IntelliJ不断用不同的错误轰炸我。

这是我的想法:JSTL试图访问java的getter / setter与Java布尔参数和返回types。 Jstl寻找使用java命名约定的方法,所以getBar1和setBar1但是kotlin生成了isBar1和setBar1

Java – 根据这个kotlin参考页面,布尔值的Kotlin互操作是布尔值: Kotlin- Java互操作参考

你有什么想法如何摆脱这个问题?

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

你可以在这里使用Kotlin的数据类function,

尝试下面

 data class Foo(val isBar1:Boolean= false,val isBar2:Boolean= false)