【发布时间】:2015-09-10 12:47:12
【问题描述】:
是否有可能从自动完成组件中获取不在列表中的值? 我必须允许用户从列表中选择一个元素或添加新元素。
我的自动完成是这样的:
<p:autoComplete
id="auto"
value="#{bean.myobject}"
completeMethod="#{bean.autoComplete()}"
var="myvar"
converter="myConverter"
itemValue="#{myvar}"
itemLabel="#{myvar.description}">
<p:ajax event="itemSelect" listener="#{bean.handleSelect}">
</p:ajax>
<p:ajax event="change" listener="#{bean.action}">
</p:ajax>
</p:autoComplete>
在我的 bean 中,handleSelect 方法与列表中的对象完美配合。
相反,Action 方法不会从列表中获取值。
方法动作是这样的:
public void action(AjaxBehaviorEvent e) {
//FIRST SOLUTION
AutoComplete anAutoComplete = (AutoComplete) e.getComponent();
String aSelection = anAutoComplete.getValue().toString();
System.out.println(aSelection);
//SECOND SOLUTION
FacesContext context = FacesContext.getCurrentInstance();
UIComponent current = UIComponent.getCurrentComponent(context);
Map<String, Object> attrMap = current.getAttributes();
String test = (String) attrMap.get("auto");
System.out.println(test);
}
两种解决方案都不起作用(变量 aSelection 和 test 都为空)。 我的错误在哪里? 谢谢。
【问题讨论】:
-
您想在您的操作方法中从自动完成中选择项目吗?
-
不,如果用户对不在列表中的单词进行数字输入,我想要获取该值,以便在列表中的该值之后添加...
-
“如果用户数字一个不在列表中的单词”你能详细说明一下吗
-
如果我的列表包含“Cat”和“Dog”以及用户数字“Bird”,我想在我的 bean 中获取“Bird”的值......所以我可以添加“Bird”列表...
标签: jquery jsf primefaces autocomplete