2012-11-05 110 views
0

我怎么能抓住这个参数在我的Struts2的自定义拦截器,从一个JSP页面发送?传递参数给拦截

<s:url var="remoteurl" action="jsontable"> 
    <s:param name="gridName">gridTableID</s:param> 
</s:url> 
    <sjg:grid 
     id="gridTableID" 

     caption="Customer Examples (Local Data)" 
     href="%{remoteurl}" 
     gridModel="gridModel" 
     rowNum="-1" 
     hidegrid="true" 
.... 

编辑: 我的自定义堆栈:

<interceptors> 
      <interceptor name="logingInterceptor" class="com.interceptors.LoggingInterceptor"></interceptor> 
      <interceptor-stack name="newStack"> 
       <interceptor-ref name="logingInterceptor" /> 
       <interceptor-ref name="defaultStack" /> 
      </interceptor-stack> 
     </interceptors> 
     <default-interceptor-ref name="newStack"></default-interceptor-ref> 

回答

1

编辑2:如果您的拦截器不能获得请求的参数,我建议一个原子的方法解决问题。尝试一些小步骤,逐一解决问题。 在你的情况下,我会尝试如下:

1)在你的拦截器内放置一个调试“hello拦截器”,看看你的动作调用是否真的通过你的自定义拦截器。

如果不是:检查您的设置(拦截器,拦截器栈,包,动作等)。

如果是:

2)把一个正常的变量,你在一个经典的方式是发布形式(不阿贾克斯什么的,只是在JSP的形式,贴有<s:submit按钮里面<s:hidden name="foo" value="blabla"/>变量。你的行动(映射使用拦截器栈与您的自定义拦截器actiop) 尝试打印出来自拦截该变量的值

如果变量为空: 再次检查操作映射,使用Firebug网看看模块如果参数实际上是贴出来,等

如果这个变量读:

那么问题是在jqGrid的的变量,检查您所引用它在JSP,什么是再出去与萤火虫页面的方式。

等...

我建议你使用一个新的JSP只用你的东西里面,有用于显示和接收结果,与空执行(新动作)...只是一个非常非常微小的骨骼对代码进行测试是确保没有外部被搞乱了worflow ...


编辑:你的拦截器的配置似乎罚款(除defaultStack,而不是default-stack,但我敢肯定它是相同的) 。

都是一样的<package>里面你的行动,其中<interceptors>定义?


为什么在拦截器上而不是在Action中?你如何处理这些数据?

顺便说一句,这是代码:

public String intercept(ActionInvocation invocation) throws Exception { 

    final ActionContext context = invocation.getInvocationContext(); 
    HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST); 

    String gridName = (String) request.getParameter("gridName"); 

    /* do something */ 

    return invocation.invoke(); 
} 
+0

不工作?gridName始终为空 – kozla13

+0

然后,我将检查1)您正在使用的Inteceptor Stack,也许你没有使用ParamInterceptor; 2)使用NET Firebug模块查看参数是否实际上由页面在请求中输出。发布你的struts配置以获得更多帮助... –

+0

不工作我不知道我在做什么错误 – kozla13

0

试试这个。它在struts 2.0.14中为我工作。

public String intercept(ActionInvocation ai) throws Exception { 
      ActionConfig config = ai.getProxy().getConfig(); 
      Map parameters  = config.getParams(); 
      String menuId  = (String)parameters.get("empName");