如何防止 f:selectItems 显示空行



>我有 2 个相互关联的数据库表;

员工和联系方式

我想为员工创建一个下拉菜单,并显示员工的名字和姓氏,它们是联系人表中的一列。

<h:selectOneMenu id="employeeDropdown" value="#{employeeController.activeEmployee}">
       <s:selectItems id="activeEmployeeList" value="#{employeeController.activeEmployees}" var="emp"   itemValue = "#{emp}" label="#{emp.contact.firstName}"   />
</h:selectOneMenu>

联系人表允许名字列和姓氏列为空,因为它允许空字符串,选择项上显示的某些值为空。

如何防止显示/呈现这些空名字或空姓氏?

就像@subodh-joshi说的那样,你可以用getActiveEmployees方法过滤EmployeeController没有名字或姓氏的员工:

public List<Employee> getActiveEmployees() {
    List<Employee> employees = ... // get the active employees list
    List<Employee> validEmployees = new ArrayList<Employee>();
    for (Employee employee : employees) {
        if ((employee.getFirstName() != null && !employee.getFirstName().trim().isEmpty()) && (employee.getLastName() != null && !employee.getLastName().trim().isEmpty())) {
            validEmployees.add(employee);
        }
    }
    return validEmployees;
}

或者更好的是,您可以返回一个List<SelectItem>

public List<SelectItem> getActiveEmployees() {
    List<Employee> employees = ... // get the active employees list
    List<SelectItem> validEmployees = new ArrayList<SelectItem>();
    for (Employee employee : employees) {
        if ((employee.getFirstName() != null && !employee.getFirstName().trim().isEmpty()) && (employee.getLastName() != null && !employee.getLastName().trim().isEmpty())) {
            validEmployees.add(new SelectItem(employee, employee.getContact.getFirstName()));
        }
    }
    return validEmployees;
}

返回SelectItemList则无需使用f:selectItemsitemValueitemLabel属性。

相关内容

  • 没有找到相关文章

最新更新