我的jsp上有多个选择框 - 当用户选择第一个选择框时,我需要通过我的Action类查询数据库,以便填充第二个选择框(依此类推)。
我能够正确显示和选择第一个选择框的值,但无法找到基于第一个选择查询数据库的第二个值的方法。这是适用于第一个选择的代码。任何有关获得第二个选择的好方法的建议都将非常感谢。
JSP
<s:form action="fileUploadAction" method="post" enctype="multipart/form-data">
<s:div>
<s:select label="Select #1:" list="select1Map" listKey="key"
listValue="value" name="select1" headerKey="-1"
headerValue="--Select a Value--"/>
</s:div>
<s:div>
<s:select label="Select #2:" list="select2Map" listKey="key"
listValue="value" name="select2" headerKey="-1"
headerValue="--Select an Value--"/>
</s:div>
</s:form>
struts.xml中
<action name="fileUpload" class="fileUploadAction" method="display">
<result name="success">/jsp/dataUpload/fileUpload.jsp</result>
</action>
FileUploadAction.java
public class FileUploadAction extends AbstractAction{
private Map<Object, String> select1Map;
private Map<Object, String> select2Map;
private FileUploadService service = null;
public FileUploadAction(){
super();
}
public String display(){
select1Map= service.getDataForDropDown(getUser().getId());
select2Map = new HashMap<Object,String>();
return SUCCESS;
}
}
答案 0 :(得分:1)
只需声明与所选值对应的属性,检查第一个是否为空/ null,在这种情况下也加载第二个映射:
public class FileUploadAction extends AbstractAction{
@Inject FileUploadService service;
@Getter private Map<Object, String> select1Map;
@Getter private Map<Object, String> select2Map;
@Getter @Setter private String select1;
@Getter @Setter private String select2;
public String display() {
select1Map= service.getDataForDropDown(getUser().getId());
if (select1!=null) {
select2Map = service.getDataForDropDown2(select1);
}
return SUCCESS;
}
}
注意:@Getter
和@Setter
为Lombok annotations;它太棒了,我永远不会回去,但在这里它们只是意味着&#34;放一个吸气剂和一个二传手&#34; 。
答案 1 :(得分:0)
听起来你正试图这样做:http://tech.learnerandtutor.com/dynamic-drop-down-list-with-struts-2-and-ajax/
在本教程中,作者使用jQuery将onChange()事件添加到第一个选择框。当用户更改第一个框的值时,jQuery将创建一个Ajax请求,返回操作类中的方法,以返回与所选当前值关联的数据。