【问题标题】:JSON Data not displayed in JSPJSP 中不显示 JSON 数据
【发布时间】:2011-10-18 06:27:11
【问题描述】:

我一直试图在我的JSP 中显示我从操作类返回的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>

我的动作类如下..

 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;
}



 }

我的 javascript 如下..

 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);




}

现在,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

建议表示赞赏。

感谢和问候, 赫曼斯。

【问题讨论】:

  • 请列出您正在部署的库,以及它们的版本——现在它看起来像是库不匹配,从例外情况来看。
  • antlr-2.7.6.jar commons-collections-3.1.jar commons-fileupload-1.2.1.jar xwork-core-2.1.6.jar xwork-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.1-sources.jar commons -logging-1.0.4.jar commons-io-2.0.1.jar
  • 嗨,戴夫,以上是我的清单..

标签: java jquery json struts


【解决方案1】:

现在可能不相关,但早在 2009 年,Struts 和编写 json 就有一个问题,即:

http://code.google.com/p/jsonplugin/issues/detail?id=91

也许你遇到了类似的问题。

【讨论】:

  • 嗨,克里斯,感谢您的早期回复。我看过您发送的链接,但那是针对 struts 2.1.7 的,我使用的是 struts 2.1.8。但无论哪种方式,您对上述问题有任何解决方法吗??
  • 我注意到 - 您使用的是哪个版本的 XWorks?该错误仍然存​​在...您可以检查 2.1.8 的源代码,看看它是否包含建议的补丁。大概升级到更新版本的 Struts 不是一种选择?
  • 克里斯,我正在使用以下xwork,xwork-core-2.1.6.jar xwork-2.1.3.jar ..如何在xwork源中应用补丁,请您建议.
  • 查看 Dave 的回答 - 你的库版本不匹配
【解决方案2】:

异常是由于库版本不匹配引起的;在您的情况下,您正在部署 XW 的 多个 版本,情况更糟。 S2.1.8.1 需要 xwork-core 2.1.6。两者兼而有之是个坏主意。考虑使用 Maven 来处理您的依赖管理,并避免这些令人头疼的问题。

我没有验证您列表中的其余版本;你需要这样做。最简单的方法是使用 Maven,或者检查 mvnrepository.com 之类的东西(我在其中得到了S2.1.8.1 XW dependency from)。

【讨论】:

  • 嗨,戴夫,我已经删除了所有的多个匹配项,但它仍然给出了同样的例外..
  • @hemanth 请使用当前部署的库更新您的问题。我认为 Chris 的回答还是比较正确的;看起来您使用的 JSON 插件需要旧版本的 XW?是否有另一种方式可以编写 JSON,或者可以更新 S2 等?
  • @hemanth 请参阅我的第二条评论——正如 Chris 所说,这是一个已知问题,带有补丁,尽管以其他方式编写 JSON 可能更容易。
  • 到目前为止,我还没有任何其他方法可以为我的要求编写 JSON。我认为这是一种可行的方法,因为我已经看到它在其他地方得到实施。你能建议吗?
  • 使用不同的 JSON 库并将其写入响应,使用约定插件,修补 jsonplugin,尝试回滚 XW 并查看它是否有效,...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多