@@@@@@@@@@@@@@@struts2+extJs 求解@@@@@@@@@@@@@@@@@

pktangshao 2011-01-19 01:41:11
刚学习extjs
写了一个登陆的小东西.现在已经可以从extjs里把值传到action中.但在action里返回到前台页面的时候报告了一个错误
错误如下示:
\u767B\u9646\u6210\u529F is not defined
[在此错误处中断] return eval("(" + json + ")");

其中的ascii是登陆成功的意思
下面是我的action中的代码

public String login() {
String str = "";

boolean result = false;
if (user.getUsername() != null && user.getPassword() != null) {
str = "msg:登陆成功";
result = true;
System.out.println("登陆成功");
} else {
str = "msg:登陆失败";
System.out.println("登陆失败");
}
try {
response.getWriter().print("{success:" + result + "," + str + "}");
} catch (IOException e) {
e.printStackTrace();
}

return null;
}

下面是我的extjs的代码

Ext.onReady(function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';
var loginPanel = new Ext.form.FormPanel({
title:'用户登陆',
labelWidth:75,
frame:true,
bodyStyle:'padding 5px 5px 0',
width:350,
defaults:{width:230},
defaultType:'textfield',
labelAlign:'center',
autoHeight:true,
url:'user!login.action',
items:[{
fieldLabel:'用户名',
name:'user.username',
blankText:'用户名不可以为空',
allowBlank:false
},{
fieldLabel:'密码',
name:'user.password',
blankText:'请不要填写过于简单的密码',
inputType:'password'
}],
buttons:[{
text:'登陆',
type:'submit',
handler:function(){
if(loginPanel.getForm().isValid()){
loginPanel.getForm().submit({
success:function(form,action){
Ext.Msg.alert("提示:",action.result.msg);
loginPanel.hidden;
window.location='success.jsp';
},
failure:function(form,action){
Ext.Msg.alert("提示:",action.result.msg);
}
});
}
}
},{
text:'重置',
handler:function(){loginPanel.getForm().reset();}
}]
});
loginPanel.render(document.body);
});


另外还有一个问题我设置了blankText属性可是不会显示为什么呢?求高人解答..先谢了
...全文
83 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
readme1988 2011-05-31
[Quote=引用 14 楼 lu36tao 的回复:]

JSONArray array = JSONArray.fromObject(this.managers);
这一句执行不下去是怎么回事,同问啊
[/Quote]
引用的json的jar包版本不对,换成33试试
回复
lu36tao 2011-05-03
JSONArray array = JSONArray.fromObject(this.managers);
这一句执行不下去是怎么回事,同问啊
回复
lu36tao 2011-05-03
JSONArray.fromObject,同问啊
回复
readme1988 2011-01-25
[Quote=引用 10 楼 ku_wan 的回复:]
Java code

//显示
public void showManagers(){
if(operation==null||operation.equals("show")||operation.equals("")){
this.pageCount = ims.getPageCount();
……
[/Quote]
JSONArray array = JSONArray.fromObject(this.managers);
这一句执行不下去是怎么回事
回复
Ku_wan 2011-01-22
http://topic.csdn.net/u/20110122/09/4cafdb8a-b6bc-4947-b99f-dbd9a2b49d8b.html?seed=982639722&r=71366970#r_71366970

有人在讨论
回复
Ku_wan 2011-01-22

//显示
public void showManagers(){
if(operation==null||operation.equals("show")||operation.equals("")){
this.pageCount = ims.getPageCount();
this.changPage();
this.managers = ims.findManagers(this.pageNow);

//构造Json数据
JSONArray array = JSONArray.fromObject(this.managers);
System.out.println(array.toString());
this.jsonString = "{\"totalCount\":"+this.managers.size()+",\"results\":"+array.toString()+"}";

try {
ServletActionContext.getResponse().getWriter().print(this.jsonString);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



var store = new Ext.data.JsonStore({
proxy:new Ext.data.HttpProxy({
url:'ManagerAction!showManagers.action',
method:'POST'
}),
totalProperty:'totalCount',
root:'results',
fields:["id","account","password","managerLevel"]
});


前两天刚刚做的,我成功了
回复
readme1988 2011-01-22
IE7以上按F12自带js调试工具。。。
回复
readme1988 2011-01-22
grid.render();
回复
zn85600301 2011-01-20
你要自己在fireBUG 里面断点看 是否store已经拿到值
还是你显示的问题?
另外store起码有个totalProperty: 'count',总记录数的属性吧 count值需要在JSON里拼入
要不然你怎么分页
回复
pktangshao 2011-01-20
帖子不要沉啊...
大家要往下看啊..下面才是真正的问题.上面的解决了.看5#的问题
回复
pktangshao 2011-01-19
先谢了楼上的两位.上面的问题解决了.可是又出现了新的问题
我现在在action中生成了一个json的数据..想让它显示在grid里可是我在store里就是接不到值.
action中的代码如下:

public void personList()throws JSONException ,IOException{
personList = this.generator();
listSize = personList.size();
JSONArray jsonArray = new JSONArray();
JSONObject obj = null;
for (Iterator iter = personList.iterator();iter.hasNext();) {
person = (Person)iter.next();
obj = new JSONObject();
obj.put("username", person.getUsername());
obj.put("password", person.getPassword());
obj.put("email", person.getEmail());
obj.put("address", person.getAddress());
obj.put("qq", person.getQq());
obj.put("sex", person.getSex());
jsonArray.put(obj);
}
response.getWriter().print("{jsonArray:"+jsonArray+"}");//json数据打印出来格式也正确
System.out.println("查询成功"+jsonArray.length());//此处有值
}



js中代码如下示:

Ext.onReady(function(){
var store = new Ext.data.JsonStore({
url:'user!personList.action',
root:'jsonArray',
fields:[/*{
name:'id',mapping:'id'
},*/
{
name:"username"
},{
name:"password"
},{
name:"email"
},{
name:"address"
},{
name:"qq"
},{
name:"sex"
}]
});
store.load();
alert(store.getCount());
// alert(store.get("username"));
var grid = new Ext.grid.GridPanel({
//renderTo:'hello',
title:'欢迎登陆',
height:150,
width:300,
columns:[/*{
id:'id',
header:'序号',
dataIndex:'id',
width:30,
sortable:true
},*/
{
id:'username',
header:'用户名称',
dataIndex:'username',
width:80,
sortable:true
},{
id:'password',
header:'用户密码',
width:80,
dataIndex:'password',
sortable:true
},{
id:'email',
header:'邮箱',
dataIndex:'email',
width:80,
sortable:true
},{
id:'address',
header:'地址',
width:120,
dataIndex:'address',
sortable:true
},{
id:'qq',
header:'QQ号码',
dataIndex:'qq',
width:80,
sortable:true
},{
id:'sex',
header:'性别',
width:30,
dataIndex:'sex',
sortable:true
}],
store:store,
stripeRows: true,
stateful: true,
autoExpandColumn:'id'

});
});


没有错误的提示.action中的方法已经走到了...只是页面是空白的...不知道是哪里错了.还望高人指教
回复
zn85600301 2011-01-19
[Quote=引用 3 楼 pktangshao 的回复:]

问题解决了.
原来是这儿
Java code

print("{success:" + result + ",msg:" + str + "}")


应该写成这样
Java code

print("{success:" + result + ",msg:'" + str + "'}")


少了一个引号...哎.郁闷死人.
[/Quote]
下次拼json 自己打印出来一看就知道
回复
pktangshao 2011-01-19
问题解决了.
原来是这儿

print("{success:" + result + ",msg:" + str + "}")

应该写成这样

print("{success:" + result + ",msg:'" + str + "'}")

少了一个引号...哎.郁闷死人.
回复
zn85600301 2011-01-19
如果不需要返回值 就改成 void的方法 或者你直接写成 return SUCCESS;
然后看你的json格式对不?
回复
pktangshao 2011-01-19
在线等高人解答....
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2011-01-19 01:41
社区公告
暂无公告