0

次のコードを使用して、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 にファイルされたテキスト ボックスに表示したいのですが、方法がわかりません。 、 何か案が

4

2 に答える 2

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 の記述方法として 10 年前から公式に推奨されているにもかかわらず) を使用します。

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

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

(スクリプトレットには HTML エスケープ機能が組み込まれていないことに注意してください。潜在的な XSS 攻撃の穴を防ぐときは、これを考慮してください)


具体的な質問とは関係ありませんが、Java コードの設計はすべて、技術的にはJSP ファイルではなくサーブレットクラスに属します。

于 2012-11-30T16:02:06.877 に答える
0

ajax を使用し、スキャンされた新しいバーコードの要求をクライアントにサーバーに送信させてから、最新のバーコードを含む json オブジェクトを返す必要があります。クライアント側のデータ処理については、 jquery.ajaxを確認してください。

于 2012-11-30T16:03:29.080 に答える