gpt4 book ai didi

java - JSF 转换器

转载 作者:行者123 更新时间:2023-12-02 00:03:54 28 4
gpt4 key购买 nike

我收到以下错误:Conversion Error setting value 'home' for 'null Converter'. Home是所显示内容的字符串表示形式。

对我来说,这没有意义。这是 JSF 代码:

<h:selectOneMenu value="#{createResourceDialogController.selectedDir}">
<f:selectItems value="#{createResourceDialogController.dirs}" />
</h:selectOneMenu>

这是 ManagedBean 代码:

public Map<String,IDir> getDirs()
{
Map<String,IDir> retVal = new LinkedHashMap<String, IDir>();
List<IDir> dirs;
if(isCompanyResource)
{
dirs = convertToIDir(getCompanyDir());
}
else
{
dirs = convertToIDir(getUserDir());
}
for(IDir iDir : dirs)
{
retVal.put(iDir.getDir(),iDir);
}
return retVal;
}

public IDir getSelectedDir()
{
return selectedDir;
}

public void setSelectedDir(IDir selectedDir)
{
this.selectedDir = selectedDir;
}

对我来说,似乎所有类型都匹配,甚至不需要转换器。 getDirs()返回值为 IDir 的映射。当 setter 被调用时,它应该得到 IDir ?有什么想法吗?

最佳答案

JSF 转换您的 <h:selectOneMenu />在 html 中select ,它仅具有纯文本形式的值和标签属性。所以你需要使用一个转换器,或者你也可以创建一个 SelectItem包含 id-label 值的列表,当您收到表单时只需重新加载 IDir与 ID。

xhtml

<h:selectOneMenu value="#{createResourceDialogController.selectedDirId}">
<f:selectItems value="#{createResourceDialogController.options}" />
</h:selectOneMenu>

支撑 bean

@ManagedBean
@ViewScoped
public class CreateResourceDialogController {

private List<SelectItem> options;

private String selectedDirId;

private void initBean(){
options = new ArrayList<SelectItem>();
SelectItem item1 = new SelectItem(dir.getId.toString(), dir.getName());
options.add(item1);
}

public List<SelectItem> getOptions(){
return options;
}

public void setSelectedDirId(String dirId){
selectedDirId = dirId;
}

public String getSelectedDirId(){
return selectedDirId;
}
}

看看这个 tutorial 。但是,如果您要多次重复使用此代码,则应该考虑使用转换器,作为更干净的解决方案。

关于java - JSF 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14287372/

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