簡體   English   中英

使用可選參數構建Liferay Web服務

[英]Build Liferay web service with optional parameter

我需要擴展現有的Liferay Web 服務 (使用Service Builder創建)來處理其他可選參數。

使用Service Builder,您必須在方法簽名中指定每個參數:

public String getList(String param1){ .. }

這將創建一個接受get-list Web服務,該服務接受名為param1的參數。 撥打電話時必須指定每個參數,否則通話將失敗。 如果需要可選參數,只需傳遞一個空值並處理代碼內缺少的參數即可。

我的問題是向后兼容性:此Web服務已由移動應用程序使用,我無法更改該應用程序發出的呼叫。 必須在不更改方法簽名的情況下處理附加參數。

看一下BaseServiceImpl ,我試圖以這種方式獲取參數:

HttpServletRequest request = com.liferay.util.axis.ServletUtil.getRequest();
String value = ParamUtil.getString(request, "param-name");

但它會引發有關com.liferay.util.axis.ServletUtilNoClassDefException

有辦法真正做到這一點嗎?

為了增強和保持代碼的向后兼容性,一種方法是重載接受附加參數的getList()方法。 您可以通過以下步驟實現:

  1. 將您的常規通用邏輯代碼getList()移至getList(String param1)方法。
  2. getList(String param1)param1添加過濾器以處理參數不為null /空的情況。
  3. getList()調用getList(null) getList()

當您需要傳遞附加參數時,可以直接調用getList(String param1)

public String getList(){
    return getList(null);
}

public String getList(String param1){

    if(param1 != null){
        // logic for param1
    }

    // rest of your general code
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM