使用JQuery+Struts2实现了一个联动下拉框
JSP页面为(注意这里引入了jquery-1.6.js):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<title>联动下拉框</title>
<script type="text/javascript" src="js/jquery-1.6.js" ></script>
<script type="text/javascript">
function change(){
var id =$("#select1").val();
var url = "ajaxRequest.action";
var params = {
'id':id
};
$.post(url, params, callback);
}
function callback(result,textStatus){
if(textStatus == 'success'){
if(result != null){
var select2 = $("#select2");
select2.empty();
var tmp = result.split(":");
select2.append("<option value = '"+tmp[0]+"'>"+tmp[1]+"</option>");
}
}
}
</script>
</head>
<body>
下拉框1:
<s:select id="select1" list="#{1:'first',2:'second'}"
onchange="change();" headerKey="-1" headerValue="--no select--"/>
下拉框2:
<s:select id="select2" list="#{1:'--no select--'}"/>
</body>
</html>
Struts的配置文件为:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="ajaxRequest" class="com.sean.Action" method="execute">
</action>
</package>
</struts>
后台处理(这里当然可以改为通过DAO层查询数据):
package com.sean;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Action extends ActionSupport{
private static final long serialVersionUID = 1L;
private int id;
private String result;
public String execute() throws Exception{
if(id == 1){
result = "1:test1";
}else{
result = "1:a1";
}
ServletActionContext.getResponse().getWriter().print(result);
return null;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
}
web.xml文件的配置和正常的Struts2工程一样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>