ssh关于含有外键的传值中无法识别正确的action的原因和解决办法

在含有外键的表中,要保存一个值到这个外键时:
逻辑思路:
需要先将jsp页面的值传到相应的action中,在这个action中需要引入这个外键的实体层和DAO层(DAO层只需set方法),在执行函数中对于外键的传值,应该先根据外键DAO层的方法来将这个外键传给外键的对象,然后将这个对象通过此表中的实体类中的方法保存到该表中。

jsp:

<div class="form-group has-warning">
     <label class="control-label" for="inputWarning">请输入班级编号</label>
     <input name="studentclass" type="text" class="form-control" id="inputWarning">
</div>

action:

//变量(与外键相关的)
private String studentclass = "";
private Classunit classunit;
private ClassunitDAO classunitDAO;

//函数
public String getStudentclass() {
    return studentclass;
}
public void setStudentclass(String studentclass) {
    this.studentclass = studentclass;
}
public Classunit getClassunit() {
    return classunit;
}
public void setClassunit(Classunit classunit) {
    this.classunit = classunit;
}
public void setClassunitDAO(ClassunitDAO classunitDAO) {
    this.classunitDAO = classunitDAO;
}

public String execute() throws Exception
    {
        System.out.println("执行add的action");
        if(studentService.checkStudentnumber(getStudentnumber()))
        {
            return ERROR;
        }
        else
        {
            System.out.println(studentclass);
            studentex = new Student();
            studentex.setStudentNumber(studentnumber);
            studentex.setStudentName(studentname);
            studentex.setStudentGender(studentgender);
            studentex.setStudentBirth(studentbirth);
            studentex.setStudentPassword(studentpassword);
            studentex.setStudentPhone(studentphone);
            studentex.setStudentAddress(studentaddress);
            classunit = classunitDAO.findclassunitnumber(studentclass);
            studentex.setClassunit(classunit);
            studentService.addStudent(studentex);
        }
        return SUCCESS;
    }

配置:
在spring的事务管理配置中需要将这个表需要注入的DAO和外键需要注入的DAO都配置上。

<!-- 新建学生 -->
    <bean id="StudentAddAction" class="com.zdr.action.StudentAddAction">
        <property name="studentService" ref="StudentServiceImpl"/>
        <property name="classunitDAO" ref="ClassunitDAO"/>
    </bean>

否则会因为事务逻辑问题引起的无法识别action的500错误。

时间: 2024-12-30 06:11:16

ssh关于含有外键的传值中无法识别正确的action的原因和解决办法的相关文章

VISIO中的工具栏、菜单栏丢失的原因及解决办法

症状 在 Microsoft Visio 中,您可能会遇到一个或多个以下症状: 您所了解的工具栏是启用是不可见的. 找不到菜单栏. 按钮从工具栏中消失了. 原因 如果您意外地拖动工具栏或菜单栏可见屏幕区域之外,则会出现这些症状. 如果满足下列条件之一为真,则也会发生类似问题: 显示分辨率是太低,无法显示工具栏上的所有按钮. 两个工具栏停靠在同一行上相邻. 在这种情况下 Visio 会隐藏一些按钮. 解决方案 若要恢复工具栏或菜单栏,使用下列方法之一: 将显示分辨率设置为 800 x 600 或更

Android-配置文件中设置“android:clickable=&quot;false&quot;无效的原因及解决办法

开发中遇到的问题:要实现一个button初始为不可点击,于是在配置文件中设置了android:clickable="false"运行后发现还是可以点击,于是写在了Activity中:btn.setClickable(false);发现还是可以点击,在网上查资料说android setClickable 一定要放在 按扭的setOnClickListener事件之后! 因为setOnClickListener事件会去重写View v,也就是会把setClickable设为TRUE! 所以

mysql进阶 十一 外键在数据库中的作用

MySQL外键在数据库中的作用 MySQL外键的目的是控制存储在外键表中的数据,使两张表形成关联,是MySQL数据库中非常重要的组成部分,值得我们去深入了解.那么,MySQL外键究竟起到哪些作用呢?下文就将带您一探其中的秘密. MySQL外键的作用 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 例1 a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后,你只能在确定b 表中没有客户x的订单后,才可以在a表中删

JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

原文:JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法. 这2种方式都可以实现不用persistence.xml文件,免去每个Entity都要在persistence.xml文件中配置的烦恼,但是这种方式Entity实体类的主键字段注解@ID要放到 getXXX()方法上,否则不认. 方式1: 修改

Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法

如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1 import android.view.View.OnClickListener; 2 import android.content.DialogInterface.OnClickListener; 其实,当我们用某个Listener时,不一定就要import它,直接用全名去定义就不需要import了,例如 1 mButton1.setOnClickListener(new OnClickListener() 2 { 3 4 @O

Android intent 传值不更新的原因和解决办法

当 Activity 的启动模式是 singleTask 或者 singleInstance 的时候.如果使用了 intent 传值,则可能出现 intent 的值无法更新的问题.也就是说每次 intent 接收到的值都是第一次接到的值.因为 intent 没有被更新.想要更新需要做两件事情. 1. 发送方 Activity,加上一句话 ? 1 PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,Pen

在windows中的DOS窗口执行adb shell出错的解决办法

1,首先要检查是否已经配置好环境变量或者在platform-tools目录(adb.exe存在的路径)下执行的adb shell 2,步骤1没问题的话,那么运行:adb kill-server 再执行:adb shell 好了,问题解决(PS:反正我的解决了) 在windows中的DOS窗口执行adb shell出错的解决办法,布布扣,bubuko.com

eclipse中加放js文件报js语法错误解决办法

1) eclipse设置         window->preference-> JavaScript -> Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩号去掉 2) .project文件    下面的代码删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name

ECSHOP中transport.js和jquery的冲突的简单解决办法

ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原来是"ECSHOP中transport.js和jquery的冲突" 因为通用头部文件中引用了 1 {insert_scripts files='transport.js,utils.js'} transport.js与jquery有冲突.原因不多讲.在网上找到一个最简单解决办法: 成功了,