Добрый день!
Делали свой Action Type и натолкнулись на следующее: если используем kotlin, то не видны наши properties. На java все нормально.
Так на java:
package com.company.myactionwithjava.app;
import io.jmix.ui.action.ActionType;
import io.jmix.ui.action.ItemTrackingAction;
import io.jmix.ui.meta.StudioAction;
import io.jmix.ui.meta.StudioPropertiesItem;
import io.jmix.ui.component.Component;
@StudioAction(target = "io.jmix.ui.component.ListComponent", description = "Uses for test")
@ActionType("myAction")
public class MyAction <E> extends ItemTrackingAction {
private String myString = "This is my string";
@StudioPropertiesItem(required = true, defaultValue = "This is my string")
public void setMyString(String myString) {
this.myString = myString;
}
@Override
public void actionPerform(Component component) {
if (!hasSubscriptions(ActionPerformedEvent.class)) {
execute();
} else {
super.actionPerform(component);
}
}
public void execute() {
System.out.println("It's just a test: " + myString);
}
}
Свойство видно:
А так на котлин:
package com.company.actionnoproperties.app
import io.jmix.ui.action.Action
import io.jmix.ui.action.ActionType
import io.jmix.ui.action.ItemTrackingAction
import io.jmix.ui.meta.StudioAction
import io.jmix.ui.meta.StudioPropertiesItem
import io.jmix.ui.component.Component
@StudioAction(target = ["io.jmix.ui.component.ListComponent"], description = "Uses for test")
@ActionType("myAction")
class MyAction<E>: ItemTrackingAction() {
private var myString = "This is my string"
@StudioPropertiesItem(required = true, defaultValue = "This is my string")
fun setMyString(myString: String) {
this.myString = myString
}
@Override
override fun actionPerform(component: Component) {
if (!hasSubscriptions(Action.ActionPerformedEvent::class.java)) {
execute()
} else {
super.actionPerform(component)
}
}
private fun execute() {
println("It's just a test: $myString")
}
}
Свойства нет:
Подскажите, пожалуйста, что мы делаем не так