我有一个包含struts2-jquery-plugin select标记的jsp,它通过发送ajax请求动态加载其数据,如下所示:
<s:url var="remoteurl" action="providerList"/>
<sj:select href="%{remoteurl}" id="provider" name="language"
list="pList"
listKey="myKey"
listValue="myValue"
emptyOption="true"
headerKey="-1"
headerValue="Select" label="Provider"/>
现在,当发出ajax请求时,控制转到操作代码,如下所示:
ArrayList<String> pList=new ArrayList<String>();
public ArrayList<String> getpList() {
return pList;
}
public void setpList(ArrayList<String> pList) {
this.pList = pList;
}
public String providerList() {
pList.add("ASC");
pList.add("asas");
pList.add("asasasas");
return "returnedList";
}
在我的struts.xml中,与actiion providerList相对应,如果我将结果类型指定为调度程序,则它将控制权转移到jsp。我希望只是让列表pList到达选择标记的下拉列表。
现在的问题是我希望用这个pList值填充我的select标签。我应该如何在struts.xml文件中配置此providerList操作。或者我也需要对我的动作方法进行任何更改,包括返回类型或任何内容。据我所知,我可以使用返回类型作为json。除了json之外还有其他解决方案。
答案 0 :(得分:1)
首先,如果您依赖该标签,则除了JSON之外没有其他解决方案。
要使sj:select
代码生效,您必须从sj:select
listKey="myKey"
listValue="myValue"
因为,你从行动中发送的是一个字符串列表,但是由于上述两个属性,它在JSP中期望一个地图或一个bean。
在struts.xml中,您必须将结果类型配置为json,为此,我们必须在项目中包含struts2-json-plugin。