在ATG中,如果没有满足其他任何条件,Switch drop将转到默认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有些新意,所以我可能会以错误的方式解决这个问题......
答案 0 :(得分: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);
}