【问题标题】:How to get JSON object in Struts 2 jqGrid when using modelDriven interceptor使用modelDriven拦截器时如何在Struts 2 jqGrid中获取JSON对象
【发布时间】:2014-07-30 06:30:21
【问题描述】:

我正在我的 JSP 中创建一个网格,如下所示

   <sjg:grid gridModel="gridModel"  
          ---- other options -- >


   </sjg:grid>
 

在我的struts.xml 中我给出了这个动作配置

    <action name = "jsonAction" calss == "Action class" method = "methodName" >
      <interceptor-ref name="modelDriven" />
       <interceptor-ref name="basicStack" />
     <result name="success" type="json" >
        </result>
     </action>

在我的动作课中

        public myClass extends ActionSupport implements ModelDriven<BeanClass>
        {
            //My list haveing getters and setters
              public gridModel getGridModel()
               {
                  return gridModel;
                 }
              public void setGridModel(List gridModel)
            { 
                  this.gridModel = gridModel;
             }

           public String methodName()
               {
                  //code here to get the list
                 }
              
            public BeanClass getModel()
                {
                 
                 return new BeanClass();
                 }

          }

我的疑问是当我不使用ModelDriven Interceptor 时我可以构建网格。如果我使用它,那么我无法在 jqGrid 中绑定列表。

我用谷歌搜索了这个问题,但找不到合适的解决方案。据我所知,使用modelDriven 拦截器时会出现问题。这个拦截器会将动作对象保持在ValueStack

之上

即使我尝试使用[1].top,但没有运气。

编辑:

正如你所说,我正在实现ModelDriven 接口我缺少一些专业化我想我已经完成了你所说的但仍然没有运气。不知道我在哪里失踪。

我刚刚按照你说的做了我需要更改我的&lt;sjg:grid gridModel = "Here?"&gt; 中的任何内容吗?

在jqGrid中仍然无法获取数据。

【问题讨论】:

  • @RomanC 我可以理解那个解决方案.. The grid requires some properties to be set to function properly 要设置哪些属性.. 你能详细说明一下吗.. 我也试过params={ "params.acceptParamNames", "(\\[\\d+\\]\\.)*\\w+((\\.\\w+)|(\\[\\d+\\])|(\\(\\d+\\))|(\\['\\w+'\\])|(\\('\\w+'\\)))*" 这个.. 但无法得到数据..请帮助
  • 都在,也别忘了点赞你看懂的帖子。
  • @RomanC 他们都在那里。 ?可能是我不明白。你会详细说明吗..?我会给我的声誉。

标签: java jquery json jsp struts2


【解决方案1】:

即使我尝试使用 [1].top 但没有运气..

top 引用堆栈顶部的对象。 [1].top 通过索引 1 引用堆栈向下的 top 对象。在第一种情况下,它是压入堆栈的模型,在第二种情况下,它是创建后压入堆栈的动作 bean。我猜第二个包含在操作返回json 结果时提供给网格所需的属性。这些属性在 json 结果的包含参数中提供。您的操作实现了 ModelDriven 接口,但专业化错误。如果您的操作 bean 包含应该序列化为 JSON 的属性,那么模型应该是操作 bean。如果您像这样编写动作 bean,则可以做到这一点

public MyClass extends ActionSupport implements ModelDriven
{

  //My list haveing getters and setters
  public String methodName()
  {
    //code here to get the list
  }

  @Override
  public Object getModel() 
  {
    return this;
  }

}   

【讨论】:

  • 我已经按照您的建议做了,但仍然无法获取数据。有关更多详细信息,我已经编辑了我的问题。感谢您的宝贵时间
  • 我没有找到你在问题中做了什么。无论哪种情况,您是否会遵循它对我来说很好。
猜你喜欢
  • 2021-06-22
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
相关资源
最近更新 更多