我正在尝试获取网址,尝试了两种方法,但得到了“无法”#39; commandContext。尝试过其他一些,但每次都是空的。
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();
不太明白我做错了什么,请大家帮忙吗?
我想捕获用户在特定场景中遇到的网址中存在的参数。
例如,
https://webAddress/MyForm?item=someitem&qty=1
我需要得到' item'和' qty'。
答案 0 :(得分:3)
有点晚了,但我觉得这会对别人有所帮助 要从URL获取控制器命令中的查询参数,您可以按照此tutorial 中提到的方法之一进行操作 或者你可以尝试如下,获取请求属性并使用查询参数名称
获取值TypedProperty requestProp = getRequestProperties();
String item = requestProp.getString("item");
int itemQty = Integer.parseInt(requestProp.getString("qty"));
然后是你的业务逻辑 希望这会有所帮助。
答案 1 :(得分:0)
您没有提及需要参数值的上下文,因此我假设您正在为控制器命令编写业务逻辑。
当运行时框架实例化控制器命令时,它将调用setRequestProperties()
方法,传入TypedProperties
实例,其中包含请求参数(无论是作为GET还是POST参数传递,映射来自XML消息,或通过REST层)。
此默认实现(在com.ibm.commerce.commands.ControllerCommandImpl
中)只会将其存储在requestProperties
属性中,然后您可以在该属性中访问performExecute()
。
我通常建议人们覆盖setRequestProperties()
来挑选他们想要的值并将它们存储在实例变量中。
不要忘记验证validateParameters()中的参数。
请参阅知识中心的Creating business logic教程,以获得更全面的演练。