[英]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.ServletUtil
的NoClassDefException
。
有辦法真正做到這一點嗎?
為了增強和保持代碼的向后兼容性,一種方法是重載接受附加參數的getList()
方法。 您可以通過以下步驟實現:
getList()
移至getList(String param1)
方法。 getList(String param1)
為param1
添加過濾器以處理參數不為null /空的情況。 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.