我在更改时更新区域的表单中有一个 Select Enum 组件。这运作良好:
<t:select t:id="anEnum" validate="required" zone="${getZone()}" />
public String getZone() {
if (anEnum== AnEnum.TYPE1) {
return "zone1";
} else if (anEnum== AnEnum.TYPE2) {
return "zone2";
} else {
return "zone3";
}
}
@OnEvent(value = EventConstants.VALUE_CHANGED, component = "anEnum")
public Object updateDisplay(AnEnum anEnumIn) {
anEnum= anEnumIn;
if (anEnum== AnEnum.TYPE1) {
return zone1.getBody();
} else if (anEnum== AnEnum.TYPE2) {
return zone2.getBody();
} else {
return zone3.getBody();
}
}
我遇到的问题是,当我提交表单并在 java 类中的 onValidate 方法中处理验证时,页面会重新呈现并显示错误的区域 - 通常是区域 3(这可能是有意义的,因为它是“其他”在上面的方法中返回)。如何让正确的区域再次渲染 - 我在 anEnum 上尝试了@persist 但没有运气,以下也不起作用
@SetupRender
void setupRender() {
updateDisplay(anEnum);
}
任何帮助表示赞赏!