您应该仅将要在网格中显示的那些属性序列化为JSON。可以通过不同的方式来实现:
1)将要使用参数序列化的属性限制为json结果
@Result(type = "json", params = { "includeProperties", "gridModel\[\d+\]\.id, gridModel\[\d+\]\.name, total, records, rows, page, sidx, searchField, searchString", "excludeNullProperties", "true"})2)通过json注释排除属性。
@JSON(serialize = false, deserialize = false) // this prevents from output name field values
如果您使用了“在视图中打开会话”过滤器,则它可以加载这些属性并根据需要(即在序列化期间)初始化它们。因为当您的操作返回JSON结果时,hibernate会话仍保持打开状态。当结果返回时,Struts2执行它。此时会议应该打开。为此,您应该配置过滤器链的顺序。如果“在视图中打开会话”过滤器处于第一顺序,则可以在执行Struts2结果后关闭会话。
<filter> <filter-name>Open Session in View Filter</filter-name> <filter-class> org.springframework.orm.hibernate4.support.OpenSessionInViewFilter </filter-class></filter><filter-mapping> <filter-name>Open Session in View Filter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>



