【问题标题】:p:inputText size attribute doesn't limit allowed text lengthp:inputText 大小属性不限制允许的文本长度
【发布时间】:2015-08-23 10:04:04
【问题描述】:

我正在使用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 属性可以防止大小无效的数据甚至被尝试写入数据库,但显然不是。我该如何解决这个问题?

【问题讨论】:

标签: primefaces


【解决方案1】:

试试 maxlength 属性

maxlength="16"

【讨论】:

  • IMO 有两个不同的 size 和 maxlength 属性,虽然我理解其中的区别,但它是使事情过于复杂的细微差别之一,而不是从“复杂性”中受益。我认为应该只有一个设置,这意味着您可以在该字段中放置多少个字符。事情应该保持简单
  • 然后创建一个新的自定义/复合组件。不是每个人都希望这样。我有 ui's where,为了使它不具有不同物理尺寸的各种输入,我给它们相同的尺寸但具有不同的最大长度。在 w3c 投诉
猜你喜欢
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多