2016-03-02 68 views
2

我想獲取URL,嘗試以下兩種方法,但得到'null'commandContext。嘗試了其他一些,但每次都得到空。如何獲取websphere商業bean中的Url參數?

Object req = commandContext.getRequest(); 
com.ibm.commerce.webcontroller.HttpControllerRequestObject req1 = (com.ibm.commerce.webcontroller.HttpControllerRequestObject) req; 
javax.servlet.http.HttpServletRequest httpReq = req1.getHttpRequest(); 
ses = httpReq.getSession(); 


HttpServletRequest request = 
((com.ibm.commerce.webcontroller.HttpControllerRequestObject) this 
.getCommandContext() 
.getRequest()) 
.getHttpRequest(); 

不太明白我做錯了,請任何人幫忙嗎?

我想捕獲用戶在特定場景中擊中的url中存在的參數。

例如,

https://webAddress/MyForm?item=someitem&qty=1 

我需要 '項目' 和 '數量'。

回答

0

你沒有提到你需要參數值的上下文,所以我假設你正在編寫Controller Command的業務邏輯。

當控制器命令由運行時框架實例化時,將調用setRequestProperties()方法,傳入一個TypedProperties實例,其中包含請求參數(無論是作爲GET或POST參數傳遞,從XML消息映射,或者通過REST層)。

這個(在com.ibm.commerce.commands.ControllerCommandImpl中)的默認實現將簡單地將其存儲在requestProperties屬性中,然後您可以通過它訪問它,例如performExecute()

我通常會推薦人們覆蓋setRequestProperties()來挑選他們想要的值並將它們存儲在實例變量中。

不要忘記驗證validateParameters()中的參數。

請參閱知識中心的Creating business logic教程,以獲得更全面的介紹。

3

它已經有點晚了,但我認爲這對別人有幫助。
要從url中獲取控制器命令中的查詢參數,可以按照此tutorial 中提到的任一方法進行操作,也可以嘗試如下方式,獲取請求屬性並使用查詢參數名稱獲取值

TypedProperty requestProp = getRequestProperties(); 
String item = requestProp.getString("item"); 
int itemQty = Integer.parseInt(requestProp.getString("qty")); 

其次是您的業務邏輯。
希望這會有所幫助。