我在正确使用autoComplete时遇到了一些问题,我试图让用户基于对象的文本字段进行搜索。目前我有以下几点:
<p:autoComplete forceSelection="true" value="#{answer.destinationQuestion}"
completeMethod="#{editorView.completeText}"
var="destinationQuestion" itemLabel="#{destinationQuestion.questionText}"
itemValue="#{destinationQuestion}"/>
public List<Question> completeText(String query) {
List<Question> ret = new ArrayList<Question>();
for(Section section : this.survey.getSections()) {
for(Question question : section.getQuestion()) {
if(question.getQuestionText() != null && question.getQuestionText().contains(query)) {
ret.add(question);
}
}
}
return ret;
}
我对这段代码的期望是,自动完成将允许用户选择单个问题实例,但一旦从自动完成中选择一个值并触发更新事件,我就会收到以下异常:
java.lang.IllegalArgumentException: Cannot convert Question@228bb9f7 of type class java.lang.String to class Question
有人建议我使用转换器,但我不明白为什么选择的值被视为字符串而不是我的问题对象,因为itemValue被定义为问题对象。
编辑:这是在PrimeFaces 6.2上
根据您的代码,我可以告诉您的是,您缺少一个自定义转换器类。您应该像使用转换器一样使用它=“#{questionConverter}”。
为了进一步参考,你可以看到这个
我有一个实例列表。 如何将他们转变成这样一个未来:
问题内容: Json字符串: C#类: C#将json转换为电影的c#列表: 我的变量最终是一个计数为0的空列表。我是否缺少某些内容? 问题答案: 您的C#类映射与json结构不匹配。 解决方案:
我正在迁移从冰脸selectInputText到Primeface自动完成组件。 我将Primefaces 5.3.5与JSF 2.2.8结合使用。我在Icefaces 1.2中看到的自动完成结果与我的旧版本相同,但我没有看到用户详细信息。我在每行的第一个单元格中只看到数字0。 我不确定我的转换器看起来像什么 公共类AppUserConzer实现转换器{ } 我的自动完成组件的结果 你能告诉我我做
问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说
问题内容: 我有SourceObjects列表,我需要将其转换为ResultObjects列表。 我可以使用ResultObject的方法将一个对象获取到另一个对象: 我当然可以这样: 但对于能够展示如何使用 rxJava 进行相同操作的人,我将非常感激。 问题答案: 如果发出,则可以使用以下运算符: (将您的列表转换为可观察项) (将您的商品转换为其他商品) 运算符(将完成的Observable
我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?