1

af:selectOneChoice组件中有一个员工列表,并显示他们的全名,效果很好。如何确保af:selectOneChoice组件输出的是员工的全名而不是他的缩写名,即名字的第一个字母和全名?而且我需要它在不修改员工实体的情况下完成。一个好的解决方案是对employeesPageDef 页面定义执行此操作。也许这可以使用 标记,但我不知道如何工作和满足我找不到的文档。请告诉我:我该如何解决这个问题,并说明如何使用 页面定义中的标签。

请提供在页面定义(ADF 绑定)中使用 AttrViewExprs 标记的示例。

4

2 回答 2

0

您可以使用 aMap来填充f:selectItems.

在您的托管 bean 中执行以下操作:

public class Bean
{
    private Map<String, Employee> employees;

    public Map<String, Employee> getEmployees()
    {
        if (employees == null)
        {
            initMap();
        }
        return employees;
    }

    private void initMap()
    {
        //get list of employees and put in map
        employees = new HashMap<String, Employee>;
        for (Employee e : someClass.getAllEmployees())
        {
            String name = e.getFirstName().subString(0,1);
            name += ". ";
            name += e.getLastName(); 
            employees.put(name, e);
        }
    }
}

然后在您的 JSF 页面中,您可以使用:

<f:selectItems value="#{bean.employees}" />
于 2012-10-19T13:55:14.843 回答
0

Per Duncan Mills:为什么不使用 JSTL 子字符串表达式来执行此操作?例如

 <af:outputText value="#{fn:substring(row.bindings.FirstName.inputValue,0,1)}"/>

在表格内只会打印每个员工姓名的第一个字母。

您需要在项目中包含 JSTL 函数 taglib 并将其添加到

jsp:root definition:
    xmlns:fn="http://java.sun.com/jsp/jstl/functions

"

于 2012-10-23T17:53:56.337 回答