我正在使用带有 JSF2.0 的 bean 验证。我有一个验证组,我根据几个条件指定它并链接到托管 bean 中的属性。该属性在页面首次加载并正常工作时分配(即,当提交表单时,验证了正确的组)。但是,如果我更改此属性,则不会更新验证组,并且将使用设置的任何原始值。
例如:JSF 片段:
<h:selectOneMenu id="unitOfMerchandise" value="#itemManager[targetBean].unitOfMerchandise}">
<f:selectItem itemLabel="-- select --" itemValue="" />
<f:selectItems value="#{itemManager.unitsOfMerchandise}" />
<f:validateBean validationGroups="#{itemManager.validatorClass}" />
</h:selectOneMenu>
方法:
@ManagedBean
@ViewScoped
public class ItemManager implements Serializable {
private String validatorClass = "com.rcs.itemmngr.model.validation.RegularItem"
private OpenItemRequest openItemRequest
private void onItemTypeSelected() {
validatorClass = itemManagerModel.getValidatorItemRequestClass(openItemRequest).getName();
}
///getters setters
}
关于如何让它发挥作用的任何想法?我还寻找了一种在托管 bean 中以编程方式更改验证组的方法,但没有任何乐趣。