整个有点混乱,希望大家不要介意 谢谢了。一个JSP页面 2个action 2张简单的数据库表  谢谢各位了jsp页面 代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<s:head />
<sx:head /> <title>My JSP 'addStudent.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<form method="post" action="StudentInfoAction">
新增学生名
<input name="sname">
<br />
新增学号
<input name="snu">
<br />
性别
<br>
<input type="radio" checked="checked" value="男" name="ssex">

<br>
<input type="radio" value="女" name="ssex">

<br>
手机号:
<input type="text" name="sphone">
<br>
年级
<input type="text" name="sgrade">
<br>
<sx:datetimepicker name="sbirth" label="生日:"
displayFormat="yyyy-MM-dd"></sx:datetimepicker>
<br>
<s:action name="ListMajorAction" id="bean" />
<s:select label="专业" list="#bean.listMajor" listKey="mnu" listValue="mname"
headerKey="" headerValue="--请选择专业--" theme="simple">
</s:select>


<br>
<input type="submit" value="确定" />
&nbsp;
<a href="login.jsp">返回登录界面</a>
</form>
</body>
</html>StudentInfoAction 代码:
package com.yaxing.admin.action;import java.sql.Timestamp; //import java.util.List;import com.opensymphony.xwork2.ActionSupport;
import com.yaxing.domain.AddressInfo;
import com.yaxing.domain.MajorInfo;
import com.yaxing.domain.StudentInfo;
import com.yaxing.service.AdminServer;
import com.yaxing.service.AdminServerImpl;public class StudentInfoAction extends ActionSupport {
private String Snu;
private String Sname;
private String Ssex;
private Timestamp Sbirth;
private MajorInfo Smajor;
private AddressInfo Saddr;
private String Sphone;
private String Sgrade = "0";
private String mnu;
// private List<MajorInfo> listMajor ; // public List<MajorInfo> getListMajor() {
// return listMajor;
// }
//
// public void setListMajor(List<MajorInfo> listMajor) {
// this.listMajor = listMajor;
// }
AdminServer adm = new AdminServerImpl();//省略get set方法
public String add() throws Exception {
// listMajor= (List<MajorInfo>)adm.findAllMajor();
StudentInfo stu = new StudentInfo();
// // AddressInfo adr = new AddressInfo();
// MajorInfo mji = new MajorInfo();
// mji.setMnu(getMnu());
// System.out.println("传入的专业号"+getMnu());
// stu.setMajorInfo(mji);
// stu.setAddressInfo(getSaddr());
// stu.setAddressInfo(adr);
stu.setSbirth(getSbirth());
stu.setSgrade(Integer.parseInt(getSgrade().toString()));
stu.setSnu(getSnu());
stu.setSphone(getSphone());
stu.setSsex(getSsex());
stu.setSname(getSname());
try {
adm.saveStudent(stu);
} catch (Exception e) {
return "input";
}
return "success";
} public String execute() {
return SUCCESS;
} try {
adm.saveStudent(stu);
} catch (Exception e) {
return "input"; }
return "success";
}}ListMajorAction代码:package com.yaxing.admin.action;
import java.util.List;import com.opensymphony.xwork2.ActionSupport;
import com.yaxing.domain.MajorInfo;
import com.yaxing.service.AdminServer;
import com.yaxing.service.AdminServerImpl;public class ListMajorAction extends ActionSupport {
private List<MajorInfo> listMajor ; public List<MajorInfo> getListMajor() {
return listMajor;
} public void setListMajor(List<MajorInfo> listMajor) {
this.listMajor = listMajor;
}
public String execute(){
// MajorInfo major = new MajorInfo();
AdminServer adm=new AdminServerImpl();
listMajor= (List<MajorInfo>)adm.findAllMajor();

//
// for(Iterator iter = listMajor.iterator();iter.hasNext();) {
// MajorInfo majorInfo = (MajorInfo)iter.next();
// System.out.println(majorInfo.getMname());
// }
return SUCCESS;
}
}StudentInfo 表:名称 代码 注释 最小值 最大值 默认值 数据类型 长度 有初始值 强制 主要的 外来键 默认值
Snu Snu 学号 char(11) 11 FALSE TRUE TRUE FALSE
Sname Sname 学生姓名 char(16) 16 FALSE FALSE FALSE FALSE
Ssex Ssex 性别 char(4) 4 FALSE FALSE FALSE FALSE
Sbirth Sbirth 生日 datetime FALSE FALSE FALSE FALSE
Smajor Smajor 专业 char(10) 10 FALSE FALSE FALSE TRUE
Saddr Saddr 地址 char(10) 10 FALSE FALSE FALSE TRUE
Sphone Sphone 手机 char(11) 11 FALSE FALSE FALSE FALSE
Sgrade Sgrade 年级 int FALSE FALSE FALSE FALSE majorinfo表:
表格MajorInfo的列清单
名称 代码 注释 最小值 最大值 默认值 数据类型 长度 有初始值 强制 主要的 外来键 默认值
Mnu Mnu 专业编号 char(10) 10 FALSE TRUE TRUE FALSE
Mname Mname 专业名称 char(20) 20 FALSE FALSE FALSE FALSE
Dnu Dnu 系部编号 char(10) 10 FALSE FALSE FALSE TRUE
 表之间的关联关系为:studentInfo表的smajor 参照majorinfo表的mnu 也就是专业号这里的专业是从数据库中查询出来的。目的想把此专业名对应的专业号smajor保存在数据库中但是后台插入的数据显示:即smajor字段(参照majorInfo表的mnu 专业号。)是null 其他均可以插入。在后台测试 getMnu()返回的也是null值。目前的疑惑是 怎么将这个smajor 即专业号存进数据库呢?Hibernate 映射文件和pojo都是myeclipse8.6自动生成的。

解决方案 »

  1.   


    <s:select label="专业" name="mnu" list="#bean.listMajor" listKey="mnu" listValue="mname"
                    headerKey="" headerValue="--请选择专业--" theme="simple">
    </s:select>name与你strut2 action中对应字段的get set方法对应
      

  2.   

            stu.setSsex(getSsex());//这里是空值吧?你在这行下面打印一行看有没有值?
      

  3.   

    <s:select label="专业" name="mnu" list="#bean.listMajor" listKey="mnu" listValue="mname"
                    headerKey="" headerValue="--请选择专业--" theme="simple">
    </s:select>
    这个标签里面设置name属性,这个属性名称要在你的action里存在,要写get set方法。
      

  4.   

    楼上的很麻烦吧  直接和bean中的一致就行了 要不每个都写set get方法 那不累死了
      

  5.   

    和bean对应?
    我这个就是对应了的啊?
    不写的话 怎么处理呢