在JSP中的文本框中显示变量值

时间:2012-11-30 15:50:15

标签: jsp

我使用以下代码从JSP中的条形码扫描器读取条形码扫描值

<%
    final Scanner scanner;

    try 
    {
        scanner = new Scanner();

        try {
            scanner.release();
            scanner.close();
        } catch (Exception e) {

        }

        scanner.open("MotorolaScannerUSB");

        scanner.claim(100);
        scanner.setDeviceEnabled(true);
        scanner.setDataEventEnabled(true);

        scanner.addDataListener(new DataListener() 
        {
            public void dataOccurred(DataEvent arg0) {
                Scanner scn = (Scanner) arg0.getSource();

                if (scn.equals(scanner)) {                      
                    try {
                        scanner.claim(100);
                        System.out.println(new String(scanner.getScanData()));
                        scanner.claim(100);
                        scanner.setDeviceEnabled(true);
                        scanner.setDataEventEnabled(true);
                    } catch (JposException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }
    catch (Exception e) {
        System.err.println("error");
    }
%>

我配置了扫描仪,它已成功打开,当我扫描代码时,它已打印到控制台,但现在我想在JSP中提交的文本框中显示扫描的代码,但我不知道知道如何,任何想法

2 个答案:

答案 0 :(得分:0)

替换

System.out.println(new String(scanner.getScanData()));

通过

request.setAttribute("scanData", new String(scanner.getScanData()));

以便您可以稍后在同一个JSP中执行

<input type="text" value="${fn:escapeXml(scanData)}" />

或者,如果您不知道如何使用JSTL / EL,或者由于某些不明原因而无法使用它(尽管它们是官方推荐的JSP编写方式十年以来),使用

String scanData = new String(scanner.getScanData());

<input type="text" value="<%= scanData %>" />

(请注意,scriptlet没有内置的HTML转义功能,在防止潜在的XSS攻击漏洞时会考虑到这一点)


对具体问题

无关,所有Java代码设计在技术上都属于servlet类,而不是JSP文件。

答案 1 :(得分:0)

您需要使用ajax并让客户端发送扫描到您的服务器的任何新条形码的请求,然后返回带有最新条形码的json对象。查看jquery.ajax以了解客户端数据处理。