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)
- 如何将Java文件转换为Kotlin文件?
- 去create-react-kotlin-app中声明不起作用
- 高效的地图和filter组合与stdlibs
- Android studio 2.3:无法初始化类org.jetbrains.kotlin.android.actions.NewKotlinActivityAction
- 使用kotlin-stdlib 1.1.51,但加载了kotlin-runtime 1.3
- kotlin未解决的KDoc链接,但IntelliJ不喜欢导入修复它
- Intellij IDEA中Kotlin项目的自动完成和代码分析非常慢
- 无法在build.gradle中添加一个kotlin项目的mysql连接器?
- Kotlin字节码 – 如何在IntelliJ IDEA中分析?