0

システム内の特定の部品名と部品番号を検索するためのgetPartsメソッドを定義する次のコードがあります。このコードはシステムのAPIからのものであるため、だれも助けてくれない場合は、この質問を削除します。私は誰かが解決策を見つけたり、途中で私を助けてくれる可能性があると考えました。

<%! private QueryResult getParts( String name, String number )
        throws WTException, WTPropertyVetoException {

    Class cname = wt.part.WTPart.class;
    QuerySpec qs = new QuerySpec(cname);
    QueryResult qr = null;

    qs.appendWhere
        (new SearchCondition(cname,
                                 "master>name",
                                 SearchCondition.EQUAL,
                                 name, 
                                 false));
    qs.appendAnd();
    qs.appendWhere
        (new SearchCondition(cname,
                                 "master>number",
                                 SearchCondition.EQUAL,
                                 number, 
                                 false));


    qr = PersistenceHelper.manager.find(qs);

    System.out.println("...found: " + qr.size());

    return qr;
}
%>

しかし、私はユーザーがこれらの部品をより柔軟に見つけられるようにしたいと思います。そこで、ラジオボタンをチェックするための条件ステートメントを設定しました。これにより、部品名と部品番号で検索したり、すべてを検索したり、ワイルドカードを使用して検索したりできます。ただし、後者の2つのオプションを実装するのに問題があります。

上記を達成するために、私は以下のコードを書きました:

<% 
String partName = request.getParameter("nameInput");
String partNumber = request.getParameter("numberInput");
String searchMethod = request.getParameter("selection");

//out.print(searchMethod);

QueryResult myResult = new QueryResult();

if(searchMethod.equals("search"))
    myResult = getParts(partName, partNumber);

else if(searchMethod.equals("all"))
{
    //Should I write a new function and do this?
    //myResult = getAllParts();
    //or is there a way I could use a for each loop to accomplish this?

}

//else if(searchMethod.equals("wildcard"))
    //get parts matching %wildcard%


while(myResult.hasMoreElements())
{
        out.print(myResult.nextElement().toString());
}

%>

基本的に、ユーザー入力を受け入れ、実行したい検索のタイプ​​をチェックします。すべての値をmyResultオブジェクトに渡す簡単な方法はありますか?同様にワイルドカード検索についても?前に言ったように、APIにアクセスせずに支援しようとするのは無駄かもしれませんが、うまくいけばそうではありません。

ありがとう!

4

1 に答える 1

1

関数を再利用できます(そして再利用する必要があります)が、そのためには、パーツ名と番号が必要になります(これらは入力パラメーターであるため)。したがって、複数の結果オプションの場合、パーツ名と番号のリスト/コレクションを取得し、それらを個別に関数にフィードしてから、ニーズに最も適した形式で結果を収集する必要があります。

于 2012-07-10T19:57:23.060 に答える