根据Struts2和Ajax中的文本框值填充Dropdown和其他字段

时间:2011-12-30 11:03:56

标签: java ajax struts2

我正在为我的应用程序使用Struts 2。我想基于文本框onblur动作更新Dropdown和其他三个领域。?我很清楚如何进行ajax调用。但我不知道如何从自定义对象返回填充多个feild。对象将是 1.工人名单 - 如何建立选择下拉列表

选择工人 填充 1. 3个文本框中的工资对象值。

3 个答案:

答案 0 :(得分:0)

基本上你有很多选择。 首先是从您的操作类发送类似JSON数据,并使用Jquery / DOJO,普通java脚本或您选择的任何其他JS框架填充操作中的下拉列表和其他字段。

如果您想要开箱即用的东西可以使用Struts2-Jquery plugin

这是一个基于用户在第一个下拉/文本框中输入的值的小代码填充下拉列表。

dropdownreset(document.getElementById("district_"));
        var selectedState = document.getElementById("stateList_");
        var statedata = selectedState.options[selectedState.selectedIndex].value;
        var formInput='state='+statedata;       
        $.getJSON('search/dropDownRenderer',formInput,function(data) {
            //$('.result').html('' + data.districts + '');
            $.each(data.districts,function(index, value){
            var districtid = document.getElementById("district_");
            var option=new Option(value,value);
            try{
                districtid.add(option);
            }
            catch(e){
                districtid.appendChild(option);
            }
            });
            });

所以我们正在填充状态,并根据哪些区域值被填充。在Action类中,我们将区域列表作为JSON发回。所以我相信你的情况以及下拉值你可以发送其他2个字段作为JSON数据让Jquery处理这个。

答案 1 :(得分:0)

如果您愿意使用Struts2 Jquery Plugin。然后我得到你真正想要的答案。

您可以使用< sj:select>使用reloadTopics并在< s:textfield>的onblur事件上发布这些主题。 < SJ:选择>还将表单的formId提交给reloadTopics url。

Here is a related example.

答案 2 :(得分:0)

尝试这一点,将使用jsonplugin-0.32.jar帮助您使用Struts 2.0.14。

struts.xml中:

<struts>
     <package name="example" extends="json-default">
        <action name="HelloWorld" class="example.HelloWorld"  >
            <result type="json" />
        </action>
              <action name="HelloWorld1" class="example.HelloWorld"  >
            <result name="success" >example/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

动作类Helloworld.java:

package prabhakar;

import glb.DB;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Prabhakar
 */
public class HelloWorld  {


    private List<StateMaster> stateList= new ArrayList<StateMaster>();
    private List<RegnMaster> regnList= new ArrayList<StateMaster>();

    private Integer stateId;
    public Integer getStateId()
    {
    return this.stateId;
    }
    public void setStateId(Integer stateId)
    {
    this.stateId=stateId;
    }
    public List<StateMaster> getStateList() {
        return stateList;
    }

    public void setStateList(List<StateMaster> stateList) {
        this.stateList = stateList;
    }
     public void setRegnList(List<RegnMaster> regnList) {
        this.regnList = regnList;
    }
    public List<RegnMaster> getRegnList() {
        return regnList;
    }

    public String execute() throws Exception {

        stateList=DB.getStateData()//
        if(stateId !=null)
          {
         regnList=DB.getRegnByStateId(stateId);
          }

        //setMessage(getText(MESSAGE));
        return "success";
    }

    /**
     * Provide default valuie for Message property.
     */

}

您可以直接调用HelloWorld.action来查看JSON数据,否则您可以将JSON数据绑定到下面的表单元素。

JSP页面HelloWorld.jsp:

  /*
     Prabhakar
  */

<%@ page contentType="text/html; charset=UTF-8" %>

<%@ taglib prefix="s" uri="/struts-tags" %>
<script>
<%@include file="../js/jquery-1.7.1.min.js"%>
</script>
    <html>

<!-- JavaScript Plugins -->
  <script>
       function getLoad(){


       var stateId = $('#state').val();

$.getJSON('HelloWorld.action', {'stateId': stateId},
    function(data) {

           var divisionList = (data.regnList);

                var options = $("#regn");
                options.find('option')
    .remove()
    .end();
     options.append($("<option />").val("-1").text("--Select--"));
$.each(divisionList, function() {

    options.append($("<option />").val(this.regnId).text(this.regnName));
});
    }
);}
   </script>

<!-- jQuery-UI Dependent Scripts -->

    <body>
        State List <s:select name="stateId" list="stateList" id="state" listKey="stateId" onchange="getLoad()" listValue="stateName" headerKey="0" headerValue="--select--" />
        Regn List <s:select name="regnId"  list="regnList" listKey="regnId" id="regn" listValue="regnName" headerKey="0" headerValue="--select--" />
    </body>
</html>