HTML5 + JSF 2.2 +
Если вы используете HTML5 и JSF 2.2+, укажите его как атрибут passthrough .
<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));
}
});