Java JSON数据未显示在JSP中
我一直试图在我的Java JSON数据未显示在JSP中,java,jquery,json,struts,Java,Jquery,Json,Struts,我一直试图在我的JSP中显示从action类返回的JSON数据,但徒劳 我正在使用struts 2.1.8 下面是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.dt
JSP
中显示从action类返回的JSON
数据,但徒劳
我正在使用struts 2.1.8
下面是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>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources"> </constant>
<package name="sampleStrutapp" extends="struts-default">
<action name="login" class="struts2.LoginAction">
<result name="success">/checkValidation.jsp</result>
<result name="error">/HelloWorld.jsp</result>
</action>
</package>
<package name="struts2" extends="json-default">
<action name="populate" class="struts2.Populating">
<result type="json">
<param name="root">popdata</param>
<param name="noCache">true</param>
</result>
</action>
</package>
</struts>
现在,jquery帖子不起作用。
以下是当前的库结构
commons-collections-3.1.jar,
commons-fileupload-1.2.1.jar,
commons-io-1.3.2.jar,
commons-logging-1.1.1.jar,
freemarker-2.3.15.jar,
slf4j-api-1.5.8.jar,
slf4j-simple-1.5.8.jar,
struts2-core-2.1.8.1.jar,
struts2-jquery-plugin-1.8.3.jar,
xwork-core-2.1.6.jar
我的js文件如下
jquery-1.6.4.min.js,
json.js
欢迎提出建议
感谢和问候,
hemanth.现在可能与此无关,但在2009年,Struts和编写json存在一个问题,即:
可能与您遇到的问题类似。异常是由库版本不匹配引起的;在您的情况下,您正在部署多个版本的XW,这更糟糕。S2.1.8.1要求xwork核心2.1.6。两者都在路上是个坏主意。考虑使用Maven来处理依赖关系管理,并避免这些类型的头痛。
我没有验证您列表中的其余版本;你需要这样做。最简单的方法是使用Maven,或者查看mvnrepository.com(我在那里得到了答案)。嗨,Chris,感谢您的早期回复。我看到了您发送的链接,但那是针对struts 2.1.7的,我使用的是struts 2.1.8。但不管怎样,你对上述问题有什么解决办法吗?我注意到-你使用的是什么版本的XWorks?错误仍然打开。。。您可以查看2.1.8的源代码,看看它是否包含建议的补丁。大概升级到Struts的更新版本不是一个选项吧?chris,我正在使用以下xwork,xwork-core-2.1.6.jar xwork-2.1.3.jar。。如何在xwork的源代码中应用修补程序,请您提出建议。请参阅Dave的答案-您有不匹配的库版本请列出您正在部署的库及其版本看起来像库不匹配,从exception.antlr-2.7.6.jar commons-collections-3.1.jar commons-fileupload-1.2.1.jar xwork-core-2.1.3.jar struts2-core-2.1.8.1.jar jsonplugin-0.34.jar json-lib-2.4-jdk15.jar freemarker-2.3.15.jar commons-io-2.0.1-javadoc.jar-commons-io-2.0.0.0.0.0.1-jar commons-io-1.0.1.0.0.0.1,以上是我的列表..嗨,dave,我已经删除了所有的多个匹配项,但仍然给出了相同的异常..@hemanth请用当前部署的库更新您的问题。我认为克里斯的答案更正确;看起来您正在使用的JSON插件需要旧版本的XW?有没有其他方法可以编写JSON,或者可以更新S2,等等?@hemanth请看我的第二条评论——就像Chris所说的,这是一个已知的问题,有一个补丁,尽管用其他方法编写JSON可能更容易。到目前为止,我还没有任何其他方法可以满足我的需求。我认为这是一个可行的方法,因为我看到它在其他地方得到了实施。你能提出建议吗?使用不同的JSON库并将其写入响应,使用约定插件,修补jsonplugin,尝试回滚XW并查看它是否有效。。。
package struts2;
import java.util.List;
import com.opensymphony.xwork2.*;
import net.sf.json.JSONObject;
import org.apache.catalina.connector.Request;
import data.Details;
import com.Various_functions;
public class Populating extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
public String usrname;
public String email;
public String lang;
public String gender;
public String comp;
public String desg;
public int rownum;
public int row;
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
private String popdata;
public String getPopdata() {
return popdata;
}
public void setPopdata(String popdata) {
this.popdata = popdata;
}
public int getRownum() {
return rownum;
}
public void setRownum(int rownum) {
this.rownum = rownum;
}
public String execute(){
Various_functions funct = new Various_functions();
List<Details> dev = funct.populate(this.getRow());
this.popdata = dev.get(0).getCompName()+","+dev.get(0).getDesig()+","+dev.get(0).getEmailId()+","+dev.get(0).getGender()+","+dev.get(0).getLang()+","+dev.get(0).getUserName();
System.out.println("In action class");
return "success";
}
public String getUsrname() {
return usrname;
}
public void setUsrname(String usrname) {
this.usrname = usrname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getComp() {
return comp;
}
public void setComp(String comp) {
this.comp = comp;
}
public String getDesg() {
return desg;
}
public void setDesg(String desg) {
this.desg = desg;
}
}
function populate(rownum){
alert(rownum);
var inputData = { "row" : 1
};
// alert(inp);
$.post('populate.action', inputData, populatecallback, "json");
}
function populatecallback(popdata) {
alert("in call back!!");
var result = popdata.split(",");
usrname= result[5];
email= result[2];
desg= result[1];
lang= result[4];
comp= result[0];
gender= result[3];
$('#txtName').val(usrname);
$('#txtEmail').val(email);
$('#txtCmp').val(comp);
$('#txtDesg').val(desg);
$('#lan').val(lang);
$('#gen').val(gender);
}