textField 文本框

是一个输入控件,用于编辑文本或任意类型的值。

  • XML 元素:textField

  • Java 类:TypedTextField

基本用法

textField 是一个带类型的组件,即可以支持输入不同类型的内容。具体的数据类型可以通过与特定类型的实体属性 绑定 或通过 datatype 属性设置。

<textField id="nameField"
           label="Name"
           datatype="string"
           clearButtonVisible="true"
           helperText="msg://textField.helper" placeholder="Test placeholder"/>
text field basic

组件提供了处理带类型值的方法:setTypedValue()getTypedValue()。这些方法可以用来设置或读取特定类型的值,例如 IntegerLong 等。

当处理组件值变化事件时,建议使用 TypedValueChangeEvent,而不要使用 ComponentValueChangeEvent。这样可以确保拿到的值是正确的类型避免额外的数据类型转换或检查。

数据绑定

如需将 textField 与数据连接,请使用 dataContainerproperty 属性。

<data>
    <instance class="com.company.onboarding.entity.Department"
              id="departmentDc">
        <fetchPlan extends="_base"/>
        <loader id="departmentDl"/>
    </instance>
</data>
<layout>
    <textField dataContainer="departmentDc"
               property="name"/>
</layout>

上面的示例中,视图为 Department 实体定义了 departmentDc 数据容器,其中包含 name 属性。textField 组件通过 dataContainer 属性与数据容器进行连接,同时 property 属性包含了在 textField 中展示的实体属性名称。

样式版本

使用 themeNames 属性设置组件样式。

样式 描述 支持的主题

align-left

字段值左对齐。

Aura, Lumo

align-center

字段值居中对齐。

Aura, Lumo

align-right

字段值右对齐。

Aura, Lumo

align-start

根据当前文本方向,将字段值向起始侧对齐。

Aura

align-end

根据当前文本方向,将字段值向末尾侧对齐。

Aura

helper-above-field

帮助文字显示在字段上方,标题下方。

Aura, Lumo

small

组件更小。

Aura, Lumo

XML 属性

autoselect

当设置为 true 时,如果组件获得了焦点,将自动选中组件的值。

clearButtonVisible

设置清空内容按钮的可见性。

trimEnabled

如果为 true,则组件会删除输入字符串的开头和结尾的空格。例如,如果用户输入" aaa bbb ",则保存到链接实体属性的字段的值将为 "aaa bbb"。

可以将 trimEnabled 设置为 false 来禁用该功能。

该属性的全局默认值可以通过 jmix.ui.component.default-trim-enabled 应用程序属性来设置。

value

定义 textField 的值。

如果不能按照需要的 数据类型 解析设置的值,则会显示默认的值转换错误消息。

事件和处理器

在 Jmix Studio 生成处理器桩代码时,可以使用 Jmix UI 组件面板的 Handlers 标签页或者视图类顶部面板的 Generate Handler 添加,也可以通过 CodeGenerate 菜单(Alt+Insert / Cmd+N)生成。

validator

为组件添加一个 validator 实例。当组件值经验证无效时,验证器必须抛出 ValidationException

@Install(to = "zipField", subject = "validator")
protected void zipFieldValidator(Integer value) {
    if (value != null && String.valueOf(value).length() != 6)
        throw new ValidationException("Zip must be of 6 digits length");
}

XML 内部元素

参考