【发布时间】:2014-07-09 21:59:38
【问题描述】:
我想在 JSF/JPA/Primefaces 应用程序中搜索带有名称、代码或条形码的项目。我用过它在使用名称或代码时效果很好。当我们手动输入条形码时,它也可以正常工作。但是当我在输入回车时使用条形码阅读器时,项目没有被选中。如何在 primefaces 自动完成中使用条形码阅读器?
<p:autoComplete accesskey="i" forceSelection="true" id="acStock"
value="#{pharmacySaleController.stock}"
converter="stockCon"
completeMethod="#{pharmacySaleController.completeAvailableStocks}"
var="i" itemLabel="#{i.itemBatch.item.name}" itemValue="#{i}"
style="width: 50px!important;">
<p:column headerText="Item">
<h:outputLabel value="#{i.itemBatch.item.name}" ></h:outputLabel>
</p:column>
<p:column headerText="Code">
<h:outputLabel value="#{i.itemBatch.item.code}" ></h:outputLabel>
</p:column>
<p:column headerText="Rate">
<h:outputLabel value="#{i.itemBatch.retailsaleRate}" >
<f:convertNumber pattern="#,##0.00" ></f:convertNumber>
</h:outputLabel>
</p:column>
<p:column headerText="Stocks">
<h:outputLabel value="#{i.stock}" >
<f:convertNumber pattern="#,###" ></f:convertNumber>
</h:outputLabel>
</p:column>
<p:column headerText="Expiary">
<h:outputLabel value="#{i.itemBatch.dateOfExpire}" >
<f:convertDateTime pattern="dd MMMM yyyy" ></f:convertDateTime>
</h:outputLabel>
</p:column>
<p:ajax event="focus" process="acStock :#{p:component('cmbPs')}" ></p:ajax>
<p:ajax event="itemSelect" listener="#{pharmacySaleController.handleSelect}" update="txtQty txtRate focusQty" ></p:ajax>
</p:autoComplete>
【问题讨论】:
-
据我了解,字符串是从条形码扫描仪正确“输入”的吗?
-
是的。读者正确输入数字并在末尾添加回车。如果我们手动输入数字就可以了。
-
您需要实现一个更改事件处理程序:
<p:ajax event="change" listener="#{pharmacySaleController.handleChange}" update="txtQty txtRate focusQty"/>,并且在方法中您需要通过在组件中获得的值来选择一个项目。
标签: jsf primefaces