0

ATGでは、他の条件が満たされない場合、Switchドロップレットはデフォルトのoparamに移動します。

同様に動作させたい液滴があります。あなたはそれをあなたのページで呼び、oparam条件の中にコードを入れます。ドロップレットから返されるoparamのケースがない場合は、デフォルトに戻す必要があります。

droplet.java

public void service(DynamoHttpServletRequest request, DynamoHttpServletResponse response) 
    throws ServletException, IOException
{
    String b = (String) request.getParameter("a");
    if(b != null && b.equals("c")){
        request.serviceLocalParameter("d", request, response);
    }else{
        request.serviceLocalParameter("e", request, response);
    }
}



droplet.jsp

<dsp:droplet name="Droplet">
    <dsp:oparam name="d">
        <!-- d param was set -->
    </dsp:oparam>
    <dsp:oparam name="default">
        <!-- e, or some other param was set -->
    </dsp:oparam>
</dsp:droplet>

私はATGに少し慣れていないので、これを間違った方法で行っている可能性があります...

4

1 に答える 1

1

存在しないローカル パラメータを処理しようとすると、serviceLocalParameter は false を返します。そのため、serviceLocalParameter() によって返された値を確認するだけで、それが false の場合は、任意の数の異なる任意のローカル パラメータを処理できます。以下の例では、任意のパラメータ "default" を提供しています (注: デフォルトは ARBITRARY です。任意の名前を付けることができます。oparam "foo" と oparam "bar" と oparam "beh" がある場合は、試すことができます。サービス foo、それが失敗した場合はサービス バーを試すことができ、それが失敗した場合はサービス beh を試すことができます...)

したがって、あなたの例に適用すると、次のようになります。

droplet.java

public void service(DynamoHttpServletRequest request, DynamoHttpServletResponse response) 
    throws ServletException, IOException
{
    boolean handled = false;
    String b = (String) request.getParameter("a");

    if(b != null && b.equals("c")){
        handled = request.serviceLocalParameter("d", request, response);
    }else{
        handled = request.serviceLocalParameter("e", request, response);
    }

    /*
     * Did not find a valid parameter, try servicing the
     * parameter named "default" instead
     */
    if (!handled) {
        request.serviceLocalParameter("default", request, response);
    }
}

これを説明のために簡略化したバージョン (サービス提供のデフォルトに関連するコードのみ):

boolean handled = false; 

handled = request.serviceLocalParameter("nondefault", request, response);

if (!handled) {
    handled = request.serviceLocalParameter("default", request, response);
}
于 2011-05-24T17:09:55.697 に答える