我有以下用于primefaces输入的jsf代码,该代码由条形码扫描器填充。每次扫描后,我需要在bean中做一些事情,清除输入并重新聚焦在下一次扫描上。到目前为止,豆子工作正常,但明确不是,我还没有开始重新聚焦。任何想法?
<p:inputText id="testInput" value="#{barcodeHelper.barcodeData}" onkeyup="if (event.keyCode == 13){onchange(); return false;}">
<p:ajax listener="#{barcodeHelper.barListener()}" update="testInput" process="@this" event="change"/>
</p:inputText>
并且听众执行此操作
public void barListener(){
if(barcodeData.length() == 13){
ean = barcodeData;
//Will do more
}
//other bar code Lengths will be dealt with maybe a switch is better
//clear the data just read
barcodeData = null;
}
我很好地听听了,但不幸的是update="testInput"
不起作用。我在这里错过了什么?谢谢你的帮助。
答案 0 :(得分:0)
您需要发布更多信息 - 跳到源中并查看渲染。你会看到一些东西(我猜):
<input id="j_1231:testInput" />
根据设置的不同,您可能需要在这种情况下明确地将更新路径发送到组件(再次,一个疯狂的猜测):formId:componentId或:subviewId:formId:componentId。如果您的路径已关闭,这应该是一个快速解决方案。
- 按照Balus的评论
如果bean正在注册一个动作,你可以使用Primefaces回调来激活Javascript方法。 http://www.primefaces.org/showcase/ui/callbackParams.jsf