В приведенном ниже фрагменте исходного кода я пытаюсь проверить вводимый текст, чтобы он не превышал 5000 символов.Однако я столкнулся со странным поведением.Когда я отмечаю компонент importantInfo
как required=true
, появляется сообщение об ошибке проверки в случае сбоя validateLength
.Однако, когда я отмечаю importantInfo
как required=false
, произойдет процесс проверки, но сообщение об ошибке не появится, если я введу более 5000 символов.Для информации я использую JSF 1.2 и ICEFACES 1.8.1.
user.jspx
<code><tr>
<td class="label">
<ice:outputText value="#{msg.importantNotes}" />
</td>
<td class="data">
<ice:inputTextarea id="importantInfo" rendered="#{editable}" required="true"
value="#{user.importantInfos}" style="width:300px;height:200px;overflow: auto;">
<f:validateLength maximum="5000" />
</ice:inputTextarea>
<h:message styleClass="errorMessage" for="importantInfo"/>
<pre style="font-family: Verdana, Arial, sans-serif; font-size: 11px; width:700px;overflow: auto;">
<ice:outputText rendered="#{!editable}" value="#{user.importantInfos}" />
face-config.xml:
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
<view-handler>com.icesoft.faces.facelets.D2DFaceletViewHandler</view-handler>
<message-bundle>i18n.validationErrorMessages</message-bundle>
<resource-bundle>
<base-name>version</base-name>
<var>version</var>
</resource-bundle>
</application>
validationErrorMessages.properties
javax.faces.validator.LengthValidator.MAXIMUM=Der eingegebene Wert ist zu lang.