我有一个要求,我在JSP中使用Struts2以及Jqgrid。
根据我的要求,我通过拦截器从不同的动作类中获取一个列表。
我必须将列表传递给JSP,并将Jgrid url传递回相应的操作类。
当我使用request.setAttribute
并传递与
jqgrid动作类url其工作正常
[E.g showExcelGrid.action?LIST='+"<%=request.getAttribute("LIST")%>"
但是当列表很大时,它无法正常工作。
请提出一些建议。
由于
答案 0 :(得分:3)
我不确定JqGrid是如何工作的,但下面描述了价值流的方式
要将动作类中的List / Map或任何其他集合支持的对象发送到JSP,您只需在动作类中创建一个list属性并为其提供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访问
<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
列表。在textfield标记上,我们将名称设置为“listForJspPage['%{id}'].value
”,这会产生类似“listForJspPage['1'].value
”的内容。这进一步可以被视为
getListForJsppage().get(index).setvalue(out given value);
答案 1 :(得分: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>