supercrazy1981 2009-05-05 10:31
浏览 203
已采纳

用struts2+spring用json来取数据的问题

总是出现下面错误
ava.sql.SQLException: Positioned Update not supported.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.getCursorName(ResultSetImpl.java:2093)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
查找资料说是修改struts.xml,加exclude,但是还是报这个错误

struts.xml配置

<constant name="struts.i18n.encoding" value="utf-8"></constant>

<package name="struts2" extends="struts-default">

    <global-results>
        <result name="add_success" type="redirect">/common/pub_add_success.jsp
        </result>
        <result name="del_success" type="redirect">/common/pub_del_success.jsp
        </result>
        <result name="modify_success" type="redirect">
            /common/pub_modify_success.jsp</result>
    </global-results>


    <action name="addPerson" class="personAction" method="addPerson">
    </action>

    <action name="delPerson" class="personAction" method="delPerson">
    </action>

    <action name="main" class="mainAction">
        <result name="success">/main.jsp</result>
    </action>

</package>

<package name="json" extends="json-default">
    <action name="find_foodCode" class="foodCodeAction" method="find_foodCode">
        <result type="json" >
         <param name="excludeProperties">
                 foodCodeManager
            </param>

        </result>
    </action>           

这个是spring的配置相关

scope="prototype">

    <bean id="foodCodeManager" class="com.oa.manager.impl.FoodCodeManagerImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

这个是action类

package com.struts2.action;

import net.sf.json.JSONObject;

import org.apache.struts2.ServletActionContext;

import com.oa.PagerModel;
import com.oa.manager.FoodCodeManager;
import com.oa.model.FoodCode;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class FoodCodeAction extends ActionSupport{

private int codeId;
private String name;
private int parentId;
private FoodCodeManager foodCodeManager;
private String result;

public String getResult() {
    return result;
}

public void setResult(String result) {
    this.result = result;
}

public int getCodeId() {
    return codeId;
}

public void setFoodCodeManager(FoodCodeManager foodCodeManager) {
    this.foodCodeManager = foodCodeManager;
}

public void setCodeId(int codeId) {
    this.codeId = codeId;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getParentId() {
    return parentId;
}

public void setParentId(int parentId) {
    this.parentId = parentId;
}

@Override
public String execute() throws Exception {

     PagerModel pm = foodCodeManager.findFoodCodes(parentId);

     ServletActionContext.getRequest().setAttribute("pm", pm);

    return SUCCESS;
}



public String find_foodCode() throws Exception{

    FoodCode foodCode = foodCodeManager.findFoodCode(1111);
    System.out.println(foodCode.getCodeId());
JSONObject jsonObject = JSONObject.fromObject(foodCode);
    System.out.println(jsonObject);

    return SUCCESS;


}   

}

[b]问题补充:[/b]
package com.oa.manager.impl;

import com.oa.PagerModel;
import com.oa.manager.FoodCodeManager;
import com.oa.model.FoodCode;

public class FoodCodeManagerImpl extends AbstractPagerManager implements
FoodCodeManager {

public void addFoodCode(FoodCode foodCode, int parentId) {
    if (parentId != 0) {
        foodCode.setParent((FoodCode) this.getHibernateTemplate().load(
                foodCode.getClass(), parentId));
    }
    this.getHibernateTemplate().save(foodCode);

}

public void delFoodCode(int codeId) {

    FoodCode foodCode = (FoodCode) this.getHibernateTemplate().load(
            FoodCode.class, codeId);

    if (foodCode.getChildern().size() > 0) {
        throw new RuntimeException("存在子分类,不允许删除");
    }
    this.getHibernateTemplate().delete(foodCode);
}

public FoodCode findFoodCode(int codeId) {
    return (FoodCode) this.getHibernateTemplate().load(FoodCode.class, codeId);
}

public PagerModel findFoodCodes(int parentId) {

    if (parentId == 0) {
        return this
                .searchPaginated("from FoodCode fc where fc.parent is null");
    }

    return this.searchPaginated("from FoodCode fc where fc.parent.id = ?",
            parentId);
}

public void modifyFoodCode(FoodCode foodCode) {

}

}

[b]问题补充:[/b]
还有我在dao类中把下面的方法的内容都去掉,只return SUCCESS的话,还是出这个错误
public String find_foodCode() throws Exception{

FoodCode foodCode = foodCodeManager.findFoodCode(1111); 
System.out.println(foodCode.getCodeId()); 

JSONObject jsonObject = JSONObject.fromObject(foodCode);
System.out.println(jsonObject);

    return SUCCESS; 

}

  • 写回答

4条回答 默认 最新

  • iteye_5433 2009-05-05 11:22
    关注

    在配置中加
    foodCode

    当然,你要有getFoodCode方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度