为什么需要=" true"禁用时验证失败=" true"已指定

时间:2013-07-30 10:56:39

标签: jsf-2 richfaces

<a4j:outputPanel id="tapalSectionSendToPanel" ajaxsingle="true">
    <h:inputText id="sendToId1"  value="#{MainBean.SectionBean.sendTo}" 
        class="createresizedTextbox" 
        required="true" requiredMessage="#{msg.labl_required}"
        disabled="true" />
 <h:message for="sendToId1" style="color:red" />
</a4j:outputPanel> 

我需要验证文本框是否为空验证,并且当我单击按钮而不在文本框中输入任何值时应显示所需。没有disabled="true"它可以正常工作。什么是我的要求的替代方案。

2 个答案:

答案 0 :(得分:4)

首先,requireddisabled不能很好地融合在一起,因为它们根据JSF Spec是互斥的:

  • 必需:表示用户需要为此输入组件提供已提交值的标志。
  • 已停用:表示此元素必须永远不会获得焦点或包含在后续提交中的标记。

就像我在评论中所说,当用户尝试提交表单而不选择节点时,您只需显示一条消息:

<h:inputText id="sendToId1"  value="#{MainBean.SectionBean.sendTo}" 
    styleClass="createresizedTextbox" required="true" readonly="true" />
<h:message for="sendToId1" value="#{msg.labl_required}" 
    rendered="#{facesContext.postback and facesContext.validationFailed}" />

作为替代方案,您只需在标记中的任何位置显示文字:

<h:outputText value="#{msg.labl_required}" 
    rendered="#{empty MainBean.SectionBean.sendTo}" />

答案 1 :(得分:3)

disabled="true"禁用输入(因此在提交表单时会跳过它),如果您不希望用户输入,请使用readonly="readonly"