【发布时间】: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
-
嗨,戴夫,以上是我的清单..