0

我有一个要求,我在 JSP 中使用 Struts2 和 Jqgrid。

根据我的要求,我通过拦截器从不同的动作类中获取列表。

我必须将列表传递给 JSP 并从 Jgrid url 传回相应的操作类。

当我使用request.setAttribute并传递与参数相同的值时

jqgrid 动作类 url 它工作正常 [E.g showExcelGrid.action?LIST='+"<%=request.getAttribute("LIST")%>" ,但是当列表很大时它不能正常工作。

请提出一些想法。

谢谢

4

2 回答 2

3

我不确定 JqGrid 是如何工作的,但下面描述了价值双向流动的方式

要将 List/Map 或任何其他支持集合的对象从您的操作类发送到 JSP,您只需在操作类中创建一个列表属性并为此提供其 getter 和 setter

示例动作类

public class SampleAction extends ActionSupport{

 private List<String> listForJspPage;

  //getter and setter for this list property

  public String execute() throws Exception{
    listForJspPage=new ArrayList<String>();
    listForJspPage=fill this list with values
    return SUCCESS;
  }

}

使用上面的代码,当您的操作将被执行时,您listForJspPage在值堆栈中,可以使用 OGNL 访问

示例 JSP

<s:iterator value="listForJspPage">
  // do what ever you want to fo
</s:itertor>

这里value="listForJspPage"将由 S2 解释为getListForJspPage()在您的操作类中以获取值。

为了将值发送回动作类,我们可以在 OGNL 的帮助下确保 setter 方法,例如

<s:iterator value="listForJspPage">
     <s:textfield name="listForJspPage['%{id}'].value" value="%{value}" />
    </s:itertor>

在此我们迭代listForJspPage列表。在文本字段标签上,我们将名称设置为“ listForJspPage['%{id}'].value”,这将导致看起来像“ listForJspPage['1'].value”的内容。这进一步可以看作

getListForJsppage().get(index).setvalue(out given value);
于 2012-04-04T15:14:43.240 回答
0

我知道这很晚,但我今天找到了这个有效的。

您可以使用 struts2 的 s:select 标签通过 jsp 将列表从一个动作类传递到另一个动作类,如下所示:

List<String> formList //getter and setter should be there in both the action classes

<div id="divList" style="display: none;">
<s:select list="formlist" multiple="true" id="selectedList" name="formListList"></s:select>
</div>

于 2015-08-21T19:07:16.873 回答