Ответ 1
HTML5 + JSF 2. 2+
Если вы используете HTML5 и JSF 2. 2+, укажите его как сквозной атрибут.
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
<h:inputTextarea value="#{bean.text}" a:maxlength="2000" />
HTML5 + JSF 2.0/2.1
Если вы используете HTML5, но еще не JSF 2.2, используйте OmniFaces Html5RenderKit
для распознавания новых атрибутов HTML5 в JSF 2.0/2.1.
<h:inputTextarea value="#{bean.text}" maxlength="2000" />
HTML4
Если вы используете HTML4, то он уже не поддерживается самим HTML. Он поддерживается только для элемента <input>
, но не для элемента <textarea>
. Поэтому также нет такого атрибута в JSF-представлении этого HTML-элемента. Вы должны решить это требование на стороне клиента, используя JS, и/или на стороне сервера, используя JSF. JS позволяет мгновенно проверять длину и игнорировать все остальные символы. JSF позволяет вам также проверить его на случай, если клиент отключил или взломал код JS. Лучше всего было бы сочетание обоих.
Предполагая, что вы
<h:inputTextarea value="#{bean.text}" styleClass="max">
<f:validateLength maximum="2000" />
</h:inputTextarea>
вот как вы могли бы сделать JQuery
$('textarea.max').keyup(function() {
var $textarea = $(this);
var max = 2000;
if ($textarea.val().length > max) {
$textarea.val($textarea.val().substr(0, max));
}
});