2011-05-20 22 views
0

在ATG中,如果沒有其他條件滿足,開關液滴將轉到默認oparam。如何使ATG液滴供應默認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,所以我可能要對這個錯誤的方式...

回答

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); 
}