Struts 2 - 填充s:根据第一个s:select从服务器中选择

时间:2016-04-13 13:31:07

标签: java jsp struts2 struts-tags

我的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;
  }
}

2 个答案:

答案 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@SetterLombok annotations;它太棒了,我永远不会回去,但在这里它们只是意味着&#34;放一个吸气剂和一个二传手&#34;

答案 1 :(得分:0)

听起来你正试图这样做:http://tech.learnerandtutor.com/dynamic-drop-down-list-with-struts-2-and-ajax/

在本教程中,作者使用jQuery将onChange()事件添加到第一个选择框。当用户更改第一个框的值时,jQuery将创建一个Ajax请求,返回操作类中的方法,以返回与所选当前值关联的数据。