2011-12-30 20 views
0

私のアプリケーションにはStruts 2を使用しています。私はテキストボックスonblurアクションに基づいてドロップダウンや他の3つのフィールドを更新したい。私はajax呼び出しを行う方法を明確にしています。しかし、私はカスタムオブジェクトの返品から複数のfeildを取り込む方法を知らない。オブジェクトは、労働者の 1.一覧になります - 3つのテキストボックス内労働者 移入 1.給与オブジェクト値の選択に選択ドロップダウンHTStruts2とAjaxのテキストボックスの値に基づいてドロップダウンやその他のフィールドを埋め込みます

を構築する方法について説明します。

+1

これを試してみてください。 http://stackoverflow.com/questions/11026542/get-json-data-from-struts/13527598#13527598 –

答えて

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); 
      } 
      }); 
      }); 

だから我々は状態を充填し、地区値は私はあなたが他の2を送信することができる値のドロップダウンと一緒にあなたのケースを信じて、我々はJSON.Soとして地区のリストを返送しているpopulated.In Actionクラスを取得しているかに基づいていますフィールドをJSONデータとして取得し、Jqueryでこれを処理させます。

0

Struts2 Jquery Pluginを使用する場合は、それから私はあなたが本当に欲しいものに答えます。

< sj:select>をreloadTopicsと共に使用して、<:textfield>のonblurイベントにトピックを公開することができます。 < sj:select>は、reloadTopics URLに送信されるフォームのformIdも受け取ります。

Here is a related example.

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. 
    */ 

} 

あなたは直接JSONデータを表示するHelloWorld.actionを呼び出すことができるか、他あなたに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> 
関連する問題