使用JSP、Struts2和jQueryAjax的相关下拉列表
index.jsp使用JSP、Struts2和jQueryAjax的相关下拉列表,jquery,ajax,jsp,struts2,Jquery,Ajax,Jsp,Struts2,index.jsp <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>AJAX in Struts 2 using JSON and jQuery</title> <script src="js/jquery-1.8.2.js" type="text/javascript"></script> <script> $(docu
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>AJAX in Struts 2 using JSON and jQuery</title>
<script src="js/jquery-1.8.2.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$('#country').change(function(event) {
var country = $("select#country").val();
$.getJSON('ajaxAction', {
countryName : country
}, function(jsonResponse) {
$('#ajaxResponse').text(jsonResponse.dummyMsg);
var select = $('#states');
select.find('option').remove();
$.each(jsonResponse.stateMap, function(key, value) {
$('<option>').val(key).text(value).appendTo(select);
});
});
});
});
</script>
</head>
<body>
<h3>AJAX calls to Struts 2 using JSON and jQuery</h3>
<s:select id="country" name="country"
list="{'Select Country','India','US'}" label="Select Country" />
<br />
<br />
<s:select id="states" name="states" list="{'Select State'}"
label="Select State" />
<br />
<br />
<div id="ajaxResponse"></div>
</body>
</html>
Struts2中使用JSON和jQuery的AJAX
$(文档).ready(函数(){
$(“#国家”)。更改(功能(事件){
var country=$(“选择#国家”).val();
$.getJSON('ajaxAction'{
国家名称:国家
},函数(jsonResponse){
$('#ajaxsresponse').text(jsonResponse.dummymmsg);
变量选择=$(“#状态”);
select.find('option').remove();
$.each(jsonResponse.stateMap,函数(键,值){
$('').val(键).text(值).appendTo(选择);
});
});
});
});
使用JSON和jQuery对Struts2的AJAX调用
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Struts2</display-name>
<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>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
支柱2
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*
index.jsp
struts.xml
<?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>
<package name="default" extends="json-default">
<action name="ajaxAction" class="com.action.AjaxJsonAction">
<result type="json">/index.jsp</result>
</action>
</package>
</struts>
/index.jsp
AjaxJsonAction.java
package com.action;
import java.util.LinkedHashMap;
import java.util.Map;
import com.opensymphony.xwork2.Action;
public class AjaxJsonAction implements Action{
private Map<String, String> stateMap = new LinkedHashMap<String, String>();
private String dummyMsg;
//Parameter for Jquery
private String countryName;
public String execute() {
if (countryName.equals("India")) {
stateMap.put("1", "Kerala");
stateMap.put("2", "Tamil Nadu");
stateMap.put("3", "Jammu Kashmir");
stateMap.put("4", "Assam");
} else if (countryName.equals("US")) {
stateMap.put("1", "Georgia");
stateMap.put("2", "Utah");
stateMap.put("3", "Texas");
stateMap.put("4", "New Jersey");
} else if (countryName.equals("Select Country")) {
stateMap.put("1", "Select State");
}
dummyMsg = "Ajax action Triggered";
// return SUCCESS;
return "success";
}
public Map<String, String> getStateMap() {
return stateMap;
}
public String getDummyMsg() {
return dummyMsg;
}
public String getCountryName() {
return countryName;
}
public void setStateMap(Map<String, String> stateMap) {
this.stateMap = stateMap;
}
public void setDummyMsg(String dummyMsg) {
this.dummyMsg = dummyMsg;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
}
package.com.action;
导入java.util.LinkedHashMap;
导入java.util.Map;
导入com.opensymphony.xwork2.Action;
公共类AjaxJsonAction实现操作{
私有映射stateMap=newlinkedhashmap();
私有字符串dummymmsg;
//Jquery的参数
私有字符串countryName;
公共字符串execute(){
如果(countryName.equals(“印度”)){
国家地图。put(“1”,“喀拉拉邦”);
stateMap.put(“2”,“泰米尔纳德邦”);
stateMap.put(“3”,“查谟-克什米尔”);
州地图。放置(“4”,“阿萨姆”);
}如果(countryName.equals(“US”)){
州地图。放置(“1”,“格鲁吉亚”);
州地图。put(“2”,“犹他州”);
stateMap.put(“3”,“德克萨斯”);
stateMap.put(“4”,“新泽西”);
}else if(countryName.equals(“选择国家”)){
stateMap.put(“1”,“选择状态”);
}
dummymmsg=“触发了Ajax操作”;
//回归成功;
返回“成功”;
}
公共映射getStateMap(){
返回状态图;
}
公共字符串getDummyMsg(){
返回dummymmsg;
}
公共字符串getCountryName(){
返回国家名称;
}
公共无效集合状态映射(映射状态映射){
this.stateMap=stateMap;
}
公共void setdummymmsg(字符串dummymmsg){
this.dummymmsg=dummymmsg;
}
public void setCountryName(字符串countryName){
this.countryName=countryName;
}
}
添加了jar引用
- commons-fileupload-1.3.1.jar
- commons-io-2.2.jar
- commons-logging-1.1.3.jar
- commons-logging-api-1.1.jar
- freemarker-2.3.19.jar
- javassist-3.11.0.GA.jar
- ognl-3.0.6.jar
- struts2-core-2.3.16.1.jar
- xwork-core-2.3.16.1.jar
- commons-lang-2.4.jar
- commons-lang3-3.1.jar
- struts2-json-plugin-2.1.8.1.jar 或
- struts2-json-plugin-2.2.1.jar
Jun 03, 2014 9:30:35 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/JqueryJsonStruts2] threw exception [Filter execution threw an exception] with root cause
java.lang.NoClassDefFoundError: org/apache/commons/lang/xwork/StringUtils
at org.apache.struts2.json.SerializationParams.<init>(SerializationParams.java:57)
at org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:214)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:204)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:249)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
2014年6月3日上午9:30:35 org.apache.catalina.core.StandardWrapper
严重:路径为[/JqueryJsonStruts2]的上下文中Servlet[default]的Servlet.service()引发了带有根本原因的异常[Filter execution引发了异常]
java.lang.NoClassDefFoundError:org/apache/commons/lang/xwork/StringUtils
位于org.apache.struts2.json.SerializationParams.(SerializationParams.java:57)
位于org.apache.struts2.json.JSONResult.writeToResponse(JSONResult.java:214)
位于org.apache.struts2.json.JSONResult.execute(JSONResult.java:204)
在com.opensymphony.xwork2.DefaultActionInvocation.ExecuteSult(DefaultActionInvocation.java:371)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)
位于org.apache.struts2.interceptor.DeprecationInterceptor.interceptor(DeprecationInterceptor.java:41)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
位于org.apache.struts2.interceptor.debug.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
在com.opensymphony.xwork2.intercept.DefaultWorkflowIntercept.doIntercept(DefaultWorkflowIntercept.java:167)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
位于com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
位于org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
在com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
在com.opensymphony.xwork2.interceptor.parameters-sinterceptor.doIntercept(parameters-sinterceptor.java:249)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
在com.opensymphony.xwork2.interceptor.parameters-sinterceptor.doIntercept(parameters-sinterceptor.java:249)
在com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)上
位于com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
在com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInte
<struts.version>2.3.16</struts.version>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts.version}</version>
</dependency>