Java 如何在JSF中正确显示存储在数据库中的类别列表
我正在申请注册问题。每个问题都与一个或多个类别相关,因此我需要在注册问题表单中选择它所属的类别 我正在考虑使用许多选择中的一个。。。来自JSF的用于该任务的组件。我可以检索数据库中所有类别的列表(只有9个),然后将该列表绑定到f:selectItems组件。然后,每个selectItem的itemValue必须是类别的id。我还需要第二个列表,其中包含所有类别的所选id,最后使用每个id再次对数据库进行某种查询,并将其添加到列表中……这也是在问题上设置的 我不需要一个关于如何检索列表等的解释,但如果这种方法是好的,我可能需要一些帮助?替代方案被广泛接受:=)将Java 如何在JSF中正确显示存储在数据库中的类别列表,java,jsf,jakarta-ee,Java,Jsf,Jakarta Ee,我正在申请注册问题。每个问题都与一个或多个类别相关,因此我需要在注册问题表单中选择它所属的类别 我正在考虑使用许多选择中的一个。。。来自JSF的用于该任务的组件。我可以检索数据库中所有类别的列表(只有9个),然后将该列表绑定到f:selectItems组件。然后,每个selectItem的itemValue必须是类别的id。我还需要第二个列表,其中包含所有类别的所选id,最后使用每个id再次对数据库进行某种查询,并将其添加到列表中……这也是在问题上设置的 我不需要一个关于如何检索列表等的解释,但
列表
作为问题
实体的属性
@Entity
public class Question {
@OneToMany
private List<Category> categories;
// ...
}
(注意:直到JSF2.2才可能在@FacesConverter
中注入@EJB
,这就是为什么它是@ManagedBean
,另请参见)
您不需要复制托管bean中的选定项或其他内容。您能提供更多关于最终实现目标的信息吗?=)@J4mes先生:是的,我现在更新了:=)我相信你的方法是目前的标准方法。除非你想实现类似Stackoverflow标签的分类系统,否则我认为它没有问题。如果你想让它看起来漂亮,试试Primeface
@ManagedBean
@RequestScoped
public class CategoryConverter implements Converter {
@EJB
private CategoryService categoryService;
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (!(value instanceof Category) || ((Category) value).getId() == null) {
return null;
}
return String.valueOf(((Category) value).getId());
}
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value == null || !value.matches("\\d+")) {
return null;
}
return categoryService.find(Long.valueOf(value));
}
}