我正在使用带有Primefaces 3.2的JSF 2.0。我有一个maxlength设置为4000的文本区域。 但是文本区域允许我键入4001个字符。 (总是一个额外的角色)。 我一直将maxlength设置为3999以避免此问题 这是一个已知的问题?我没有在展示,任何想法上看到这个问题?
<p:inputTextarea id="text" value="#{controller.text}" maxlength="4000"
rows="6" cols="150" autoResize="true" required="true" requiredMessage="Text is required" rendered="#{controller.condition}"/>
答案 0 :(得分:5)
有时输入计数为2个字符:\ r \ n而不仅仅是\ n。 在这种情况下,尝试将所有这些字符替换为setter方法中的\ n。例如,您可以使用StringUtils.replace()方法执行此操作:
your_string = StringUtils.replace(your_string, "\r\n", "\n");
答案 1 :(得分:2)
使用UTF-8字符占用多个字节来存储仍然算作一个字符,但是你可能在数据库中遇到这个问题(收到超过4000个字符的错误信息)。
你说它总是+1个字符,只使用ASCII字符(数字+英文字母)结账。
ps :(如果你使用nobleCount来显示剩余的字符,它也会出现UTF-8字符/某些特殊字符的问题。)