我正在使用struts2和jquery从服务器获取值。这里execute()方法正确调用,但是没有显示jsp值。
动作类
package example;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
private String name;
private String welcomeMessage;
@Override
public String execute() {
System.out.println("Inside Action name is " + getName());
setWelcomeMessage("Welcome " + getName() + "!!");
System.out.println(getWelcomeMessage());
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWelcomeMessage() {
return welcomeMessage;
}
public void setWelcomeMessage(String welcomeMessage) {
this.welcomeMessage = welcomeMessage;
}
}
struts.xml中
<package name="example1" extends="json-default">
<action name="test" class="example.HelloWorld">
<result type="json"></result>
</action>
</package>
Jsp页面
<html>
<head>
<title>JSON EXAMPLE</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
<body>
<form action="" id="introForm">
<label for="name">Enter Your Name</label>
<input name="name" id="name">
<input type="button" id="button1" value="Submit">
</form>
<div class="result"></div>
<script>
$("#button1").click(function() {
var name1=$("#name").val();
alert("name is "+name1);//showing entered name
$.getJSON('test', { name: name1}, function(data) {
alert(data); // not calling
$('.result').html(data.welcomeMessage);
return false;
});
});
</script>
</body>
</html>
我已将jsonplugin-0.34.jar
包含在我的lib文件夹中。
程序正常执行,未显示任何错误。
在这里,我尝试从welcomeMessage
中的操作中获取<div class="result"></div>
。
问题是它没有在jsp页面中显示JSON值。
alert(data);
内的提醒$.getJSON('test', { name: name1}, function(data) {
未调用。
请看问题在哪里。
答案 0 :(得分:1)
你的代码没问题(除了<input>
不是(自我)关闭的,以及正文中应该留在$( document ).ready()
片段内的脚本的代码;
我猜你只是被S2 JSON插件的下载页面所迷惑。该页面陈旧且无需维护,0.32和0.34是旧版本;
总是引用Maven存储库:
http://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin
并确保选择与您的struts2-core JAR匹配的版本。