gpt4 book ai didi

java - 如何将集合元素显示为 selectManyListbox 中的项目?

转载 作者:行者123 更新时间:2023-11-29 06:23:26 24 4
gpt4 key购买 nike

我有一个 bean :

public ProjectServiceImpl {    
public List<Project> getAllProjects () { ... }
}

我想将所有这些项目列为 <h:selectManyListbox> 中的项目.当用户选择一个或多个项目并按下提交按钮时,所选项目应转换为项目。

我对如何列出项目以及对应的转换器应该是什么样子感到有点困惑?

最佳答案

您需要实现 Converter#getAsString()以便所需的 Java 对象以唯一 字符串表示形式表示,可用作 HTTP 请求参数。使用数据库技术 ID(主键)在这里非常有用。

public String getAsString(FacesContext context, UIComponent component, Object value) {
// Convert the Project object to its unique String representation.
return String.valueOf(((Project) value).getId());
}

然后你需要实现Converter#getAsObject()这样 HTTP 请求参数(根据定义 String)可以转换回所需的 Java 对象(在您的情况下为 Project)。

public Object getAsObject(FacesContext context, UIComponent component, String value) {
// Convert the unique String representation of Project to the actual Project object.
return projectDAO.find(Long.valueOf(value));
}

最后只需将此转换器与相关对象类型相关联,JSF 将在 Project 出现时负责转换,无需指定 converterIdf:转换器:

<converter>
<converter-for-class>com.example.Project</converter-for-class>
<converter-class>com.example.ProjectConverter</converter-class>
</converter>

这样您就可以创建 SelectItem 并将 Project 作为值。

您可以从这篇博客文章中获得一些背景信息和更多想法:http://balusc.blogspot.com/2007/09/objects-in-hselectonemenu.html

关于java - 如何将集合元素显示为 selectManyListbox 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com