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

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器