我使用自动建议项目
创建输入文本<af:inputText label="Seller" id="Seller"
valueChangeListener="#{managedBeanTest.OnChangeSeller}" autoSubmit="true"
autoComplete="on">
<af:autoSuggestBehavior suggestedItems="#{managedBeanTest.OnSearchSellers}"/>
</af:inputText>
将SelectItem值设置为我的类Item
public class Test
{
public static class Item
{
public Item(int id, String code, String name) { ... }
public String toString() { ... }
}
public List<SelectItem> OnSearchSellers(String search)
{
ResultSet rs;
...
List<SelectItem> result = new ArrayList<SelectItem>();
while (rs.next())
result.add(new SelectItem(new Item(rs.getInt(1), rs.getString(2), rs.getString(3))));
return result;
}
public void OnChangeSeller(ValueChangeEvent valueChangeEvent)
{
Object newVal = valueChangeEvent.getNewValue();
if(newVal != null)
System.out.println("OnChangeSeller: " + newVal.getClass().getName());
}
}
但是在OnChangeSeller中我只有java.lang.String。 我如何获得原始选定的项目值(项目类)?
答案 0 :(得分:0)
没有valueChangeEvent.getOldValue() 没有这个?
答案 1 :(得分:0)
实际上将Java对象传递给HTML页面不起作用,因为浏览器只显示String值(查看呈现的HTML页面)。所以你需要做的是将对象的索引作为值传递。然后,当用户选择一个值时,您将获取索引并查找您感兴趣的真实对象的列表。
谢
答案 2 :(得分:0)
“没有valueChangeEvent.getOldValue()没有这个?”
是的,如果您使用ADF绑定。在这种情况下,返回的值是列表的索引