在下面的源代码片段中,我试图验证输入文本,以使其不超过5000个字符。但是,我遇到了一个奇怪的行为。当我将组件importantInfo
标记为required=true
时,如果validateLength
失败,将显示验证错误消息。但是,当我将importantInfo
标记为required=false
时,将进行验证过程,但是如果我输入的字符超过5000个,则不会出现错误消息。对于信息,我正在使用JSF 1.2和ICEFACES 1.8.1。
user.jspx
<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}" />
</pre>
</td>
<td/>
</tr>
faces-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.