基于p:inputText的空值启用/禁用

问题描述 投票:0回答:1

我想创建一个JSF应用程序。在应用程序中,用户将从数据库中搜索用户记录,并在表单中设置值,然后提交表单。我有一个小问题,我需要根据p:inputText

的空值启用/禁用
  • 如果数据库中的字段设置为空值,则启用p:inputText的输入
  • 如果为数据库中的字段设置了值,则禁用或使它仅读取p:inputText

这样,如果未在字段中设置任何值,则用户将能够输入值。如何实现?

<p:inputText id="firstName"  value="#{javaMB.infoEntity.firstName}"/>
<p:inputText id="lastName"  value="#{javaMB.infoEntity.lastName}"/>
<p:inputText id="age"  value="#{javaMB.infoEntity.age}"/>

this.infoEntity.setFirstName(view.getFirstName());
this.infoEntity.setLastName(view.getLastName());
this.infoEntity.setAge(view.getAge());

        DB 

        Mark   XYZ   45
        Sav    NULL  23
        NULL   Jones 33

如果设置第二行,则禁用名字的p:inputText,姓氏的p:inputText,年龄的p:inputText被禁用。如果我们设置第三行,则启用名字的p:inputText,禁用姓氏的p:inputText,禁用年龄的p:inputText


我尝试过的

使用readonly =“ true”无效,因为如果为其设置了空值,则需要输入p:inputText。

<p:inputText id="lastName"  value="#{javaMB.infoEntity.lastName}"  disabled="{!check}"/>                    
public Boolean check{set;} 

让我知道是否需要任何澄清,

jsf disabled-input
1个回答
0
投票

您可以使用Java EE EL (Expression Language)的功能。

在您的情况下,如果lastName的值为not null,则以下声明将生成disabled

p:inputText
<p:inputText id="lastName" value="#{javaMB.infoEntity.lastName}"  
             disabled=#{not empty javaMB.infoEntity.lastName}/>

<p:inputText id="lastName" value="#{javaMB.infoEntity.lastName}"  
             disabled=#{javaMB.infoEntity.lastName != null}/>
© www.soinside.com 2019 - 2024. All rights reserved.