p:inputText 大小属性不限制允许的文本长度
p:inputText size attribute doesn't limit allowed text length
我正在使用 p:inputText
并且 size
属性没有有效地限制字段中允许的字符数:
<p:inputText id="limitedField" title="Limited Field"
size="16" required="true"
styleClass="plainInput"
value="#{entity.limitedField}" />
首先,在物理上允许用户输入更多的16个字符。其次,当他们这样做时,他们没有在前端向用户显示一条优雅的消息,而是输入了一个无效值,这应该是 JSF 框架错误的规定,他们得到一个通用异常:
Caused by: java.sql.SQLException: ORA-12899: value too large for column "MYSCHEMA"."MY_TABLE"."LIMITED_FIELD" (actual: 22, maximum: 16)
我查看了生成的 HTML,确实有一个 size 属性给了文本输入,但它无效:
<input id="..." name="limitedField" type="text" size="16" title="Limited Field"" aria-required="true" class="..." />
我认为简单地设置 size 属性可以防止无效大小的数据甚至被尝试写入数据库,但显然不是。我该如何解决这个问题?
试试 maxlength 属性
maxlength="16"
我正在使用 p:inputText
并且 size
属性没有有效地限制字段中允许的字符数:
<p:inputText id="limitedField" title="Limited Field"
size="16" required="true"
styleClass="plainInput"
value="#{entity.limitedField}" />
首先,在物理上允许用户输入更多的16个字符。其次,当他们这样做时,他们没有在前端向用户显示一条优雅的消息,而是输入了一个无效值,这应该是 JSF 框架错误的规定,他们得到一个通用异常:
Caused by: java.sql.SQLException: ORA-12899: value too large for column "MYSCHEMA"."MY_TABLE"."LIMITED_FIELD" (actual: 22, maximum: 16)
我查看了生成的 HTML,确实有一个 size 属性给了文本输入,但它无效:
<input id="..." name="limitedField" type="text" size="16" title="Limited Field"" aria-required="true" class="..." />
我认为简单地设置 size 属性可以防止无效大小的数据甚至被尝试写入数据库,但显然不是。我该如何解决这个问题?
试试 maxlength 属性
maxlength="16"