- Html 表单元素添加 必填 属性(
required& requiredMessage
),添加id
用于message
显示
<h:selecOneMenu id="selectMenu" required="true" requiredMessage="this key cannot be empty">
<f:selectItem itemValue="1" itemLable="Yes"></f:selectItem>
<f:selectItem itemValue="0" itemLable="No"></f:selectItem>
</h:selecOneMenu>
- 添加提示文案显示元素(
h:message
),for
对应上一步的id
, 添加id
用于元素更新显示
<h:message for="selectMenu" id="selectOneMessage"/>
- 提交表单按钮 – 表单提示文案(
selectOneMessage
)对应元素也需要同步更新(update
)
<p:commandButton value="Save" ajax="true" update="selectOneMessage" actionListener="#{updateController.Confirm()}">
</p: commandButton>
表单校验问题
问题描述: 表单的require
和change
同时存在时,require 校验先触发,当require 校验未通过时,change
事件将不会触发,但需要触发change修改按钮disabled状态
解决方案:
将primeface
组件自带require
校验,放在change
中,或者change
的oncomplete
回调中
<h:selecOneMenu id="selectMenu">
<f:selectItem itemValue="1" itemLable="Yes"></f:selectItem>
<f:selectItem itemValue="0" itemLable="No"></f:selectItem>
<!-- bean.changeSaveDisable() 为java 方法 实时修改按钮disabled状态 -->
<p:ajax event="change" listener="#{bean.changeSaveDisable()}" update="btnSaveRegionalEvent" oncomplete='validateForm()'/>
</h:selecOneMenu>
<!-- require 校验未通过时的文案 -->
<h:outputText id="errMessage" style="display: none;line-height:35px" value="This key cannot be empty."></h:outputText>
<script type="application/javascript">
function validateForm() {
if (!$(".selectMenu").val()) {
$(errMessage).css("display","inline")
} else {
$(errMessage).css("display","none")
}
}
</script>