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