From a Zulip topic by @emilmelnikov:
In the following example, target should be a dropdown list populated with values derived from other inputs when they change, but target renders as a normal text field.
public class SampleCommand extends DynamicCommand {
@Parameter(label = "Input", callback = "inputChanged")
String input;
@Parameter(label = "Target", style = "listBox")
String target;
void inputChanged() {
MutableModuleItem<String> item = getInfo().getMutableInput("target", String.class);
item.setChoices(Arrays.asList("one", "two", "three"));
}
}
It works when choices = {" "} is passed to @Parameter with listBox. Note the single space: passing an empty string results in NullPointerException.