我为我的复选框控件定义了一个验证器:
<xp:checkBox uncheckedValue="false"
checkedValue="true" readonly="#{!matterBean.matter.editable}"
id="cbKCSupport" style="width:100%"
value="#{matterBean.matter.creatorKCSupport}"
validator="#{matterValidators.valCreatorKCSupport}">
</xp:checkBox>
该方法没什么花哨的,我只检查复选框的true或false值即可。
public void valCreatorKCSupport(FacesContext facesContext, UIComponent component, Object value) {
utils.printToConsole(this.getClass().getSimpleName().toString() + " - valCreatorKCSupport(...), value = " + value.toString());
String msg = null;
if (value.toString().equals("false")){
msg = matterProp.getProperty("gen_KCSupport");
FacesMessage message = new FacesMessage(msg);
throw new ValidatorException(message);
}
}
我注意到此验证会阻止其他组件的行为,例如对话框的打开。
对于其他控件,我有一种类似的方法,其中所需的属性基于哪个组件(按钮)已启动了对服务器的调用:
<xp:this.required><![CDATA[#{javascript:return ( submittedBy('btnSendToCommitee') || submittedBy('btnForCompletion') )}]]></xp:this.required>
我尝试为复选框设置类似的方法:
但随后出现错误消息:
执行JavaScript操作表达式时出错 脚本解释器错误,行= 2,列= 33:在Java类“ se”上调用方法“ valCreatorKCSupport(com.ibm.xsp.domino.context.DominoFacesContext,com.ibm.xsp.component.xp.XspInputCheckbox,字符串)”时出错.sebank.kkom.test.MatterValidators' 消息(带有来自issueProp.getProperty(“ gen_KCSupport”)的文本的文本)
有人建议我应该对验证器应用一些条件语句吗?