【问题标题】:How do you make an ATG droplet serve a default oparam你如何使 ATG 液滴服务于默认的操作参数
【发布时间】:2011-05-20 15:35:28
【问题描述】:

在 ATG 中,如果其他条件都不满足,Switch droplet 将转到默认的 oparam。

我有一个我想要表现类似的液滴。您在页面上调用它并将代码放入 oparam 条件中。如果您没有从您的 droplet 返回的 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 有点陌生,所以我可能会走错路……

【问题讨论】:

    标签: java atg


    【解决方案1】:

    如果您尝试为不存在的本地参数提供服务,则 serviceLocalParameter 将返回 false。所以你所要做的就是检查 serviceLocalParameter() 返回的值,如果它是假的,你可以服务任意数量的不同的任意本地参数。在下面的示例中,我为任意参数“default”提供服务(注意:默认值是 ARBITRARY,它可以被称为任何东西。如果我有一个 oparam“foo”和一个 oparam“bar”和一个 oparam“beh”,我可以尝试service foo,如果失败,我可以尝试 service bar,如果失败,我可以尝试 service 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2011-08-01
      • 2014-02-01
      • 2013-10-07
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多