我的要求是:
<rich:select>
userLoginBean.userList
)但它在backbean中
实体对象但不显示在富选中。我只想传递在rich中输入的值:select in backing bean,以便它可以在Entity bean中检查和验证值, 到目前为止,我实现了这个目标,
<rich:select id="user"
value="#{userLoginBean.user}"
required="true"
listWidth="385px"
enableManualInput="true"
defaultLabel="Please Enter">
<f:selectItems value="#{userLoginBean.userList}"
var="c"
itemValue="#{c.userid}"
itemLabel="#{not empty c.name? c.name.concat(','):c.name}#{not empty c.alias? c.alias.concat(','):c.alias}#{c.userid}"/>
<a4j:ajax event="keyup" oncomplete="if (event.keyCode == 13) {callToJs((#{rich:component('user')}.getValue())); }" />
<a4j:jsFunction name="callToJs" actionListener="#{userLoginBean.searchUserList}" >
<a4j:param name="value" assignTo="#{bean.searchValue}" />
</a4j:jsFunction>
</rich:select>
但JavaScript函数callToJs()
在支持bean代码中没有获取值:
<a4j:ajax event="keyup"
oncomplete="if (event.keyCode == 13) {callToJs((#{rich:component('user')}.getValue())); }"/>
答案 0 :(得分:0)
在richfaces 4.x中你可以做这样的事情:
<rich:hotKey key="enter" onkeydown="callToJs(#{rich:jQuery('user')}.val());"/>
答案 1 :(得分:0)
您的代码存在一些问题:
a4j:ajax
用于响应客户端事件发出ajax请求,如果您只想执行某些JavaScript,则可以使用父组件的on *属性event.keyCode
无法在&#34; oncomplete&#34;因为那并没有收到keyup
事件a4j:jsFunction
需要在&lt; rich:select&gt;之外定义,它不能是子元素select.getValue()
返回所选选项,getLabel()
返回键入的字符串所以正确的方法是:
<rich:select id="user"
value="#{userLoginBean.user}"
required="true"
listWidth="385px"
enableManualInput="true"
defaultLabel="Please Enter"
onkeyup="if (event.keyCode == 13) {callToJs((#{rich:component('user')}.getLabel())); }">
…
</rich:select>
<a4j:jsFunction name="callToJs" actionListener="#{userLoginBean.searchUserList}" >
<a4j:param name="value" assignTo="#{bean.searchValue}" />
</a4j:jsFunction>
但我认为合并两个列表将是一个更好的解决方案。