大家请看package com.pos.entity;
import java.util.HashSet;
import java.util.Set;/**
 * GoodsInfo entity. @author MyEclipse Persistence Tools
 */public class GoodsInfo implements java.io.Serializable { // Fields private String gid;
private GoodsClassInfo goodsClassInfo;
private String gname;
private Integer gamount;
private String gunit;
private Double gpin;
private Double gpout;
private Set stockDetails = new HashSet(0);
private Set providerBackDetails = new HashSet(0);
private Set sellDetails = new HashSet(0);
private Set consumerBackDetails = new HashSet(0); // Constructors /** default constructor */
public GoodsInfo() {
} /** minimal constructor */
public GoodsInfo(String gname, Integer gamount, String gunit, Double gpin,
Double gpout) {
this.gname = gname;
this.gamount = gamount;
this.gunit = gunit;
this.gpin = gpin;
this.gpout = gpout;
} /** full constructor */
public GoodsInfo(GoodsClassInfo goodsClassInfo, String gname,
Integer gamount, String gunit, Double gpin, Double gpout,
Set stockDetails, Set providerBackDetails, Set sellDetails,
Set consumerBackDetails) {
this.goodsClassInfo = goodsClassInfo;
this.gname = gname;
this.gamount = gamount;
this.gunit = gunit;
this.gpin = gpin;
this.gpout = gpout;
this.stockDetails = stockDetails;
this.providerBackDetails = providerBackDetails;
this.sellDetails = sellDetails;
this.consumerBackDetails = consumerBackDetails;
} // Property accessors public String getGid() {
return this.gid;
} public void setGid(String gid) {
this.gid = gid;
} public GoodsClassInfo getGoodsClassInfo() {
return this.goodsClassInfo;
} public void setGoodsClassInfo(GoodsClassInfo goodsClassInfo) {
this.goodsClassInfo = goodsClassInfo;
} public String getGname() {
return this.gname;
} public void setGname(String gname) {
this.gname = gname;
} public Integer getGamount() {
return this.gamount;
} public void setGamount(Integer gamount) {
this.gamount = gamount;
} public String getGunit() {
return this.gunit;
} public void setGunit(String gunit) {
this.gunit = gunit;
} public Double getGpin() {
return this.gpin;
} public void setGpin(Double gpin) {
this.gpin = gpin;
} public Double getGpout() {
return this.gpout;
} public void setGpout(Double gpout) {
this.gpout = gpout;
} public Set getStockDetails() {
return this.stockDetails;
} public void setStockDetails(Set stockDetails) {
this.stockDetails = stockDetails;
} public Set getProviderBackDetails() {
return this.providerBackDetails;
} public void setProviderBackDetails(Set providerBackDetails) {
this.providerBackDetails = providerBackDetails;
} public Set getSellDetails() {
return this.sellDetails;
} public void setSellDetails(Set sellDetails) {
this.sellDetails = sellDetails;
} public Set getConsumerBackDetails() {
return this.consumerBackDetails;
} public void setConsumerBackDetails(Set consumerBackDetails) {
this.consumerBackDetails = consumerBackDetails;
}}
package com.pos.form;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;import com.pos.entity.GoodsInfo;/** 
 * MyEclipse Struts
 * Creation date: 10-03-2009
 * 
 * XDoclet definition:
 * @struts.form name="goodsInfoForm"
 */
public class GoodsInfoForm extends ActionForm {
/*
 * Generated Methods
 */ /** 
 * Method validate
 * @param mapping
 * @param request
 * @return ActionErrors
 */
private int page;
private String type;
private String key;
private GoodsInfo goodsInfo=new GoodsInfo();
public String getKey() {
return key;
} public void setKey(String key) {
this.key = key;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public int getPage() {
return page;
} public void setPage(int page) {
this.page = page;
} public GoodsInfo getGoodsInfo() {
return goodsInfo;
} public void setGoodsInfo(GoodsInfo goodsInfo) {
this.goodsInfo = goodsInfo;
} public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
} /** 
 * Method reset
 * @param mapping
 * @param request
 */
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'addgoods.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">
-->
    <script>
       function check(){
           var name=document.all.gname.value;
           var unit= document.all.gunit.value; //得到商品单位
           var pin= document.all.gpin.value; //得到商品进价
           var pout= document.all.gpout.value; //得到商品售价
           var amount= document.all.gamount.value;
           if(name==""){
              alert("商品名称不可以为空!!!");
              return false;
           }
           if(unit==""){
              alert("商品单位不能为空!!!");
              return false;
           }
           var reg = /^\d+(\.\d+)?$/;
           if(!reg.test(pin)){
             alert("商品进价格式不对!!!");
             return false;
           }
           if(!reg.test(pout)){
             alert("商品售价格式不对!!!");
             return false;
           }
           var reg1 = /^[0-9]*$/;
           if(amount==""){
              alert("商品数量不能为空!");
              return false;
           }
           if(!reg1.test(amount)){
              alert("商品数量格式不对!!!");
            return false;
           }
            if(document.all.gcid.value==""){
          alert("商品类别不能为空,请添加类别!!!");
          return false;
         }
         document.all.mf.submit();
       }
    </script>
  </head>
  
  <body bgcolor="#EBF5FD">
      <table width="100%" height="44" bgcolor="#206AB3">
         <tr align="center">
            <td>
              <font color="#FFFFFF" size="5">商品资料管理</font>
              <font color="#FFFFFF" size="2">--商品添加</font>
            </td>
         </tr>
     </table>
     <table>
         <tr>
            <td>
              <a href="javascript:history.back()"><img border="0" src="img/back.jpg"/></a>
            </td>
         </tr>
     </table>
     <hr color="black" size="1"/>
     <form action="doGoodsInfo.do?operate=addGoodsInfo" method="post" id="mf" target="mainFrame">
     <table width="80%" border="0" cellspacing="1" bgcolor="black" align="center">
        <tr bgcolor="white">
          <td align="center">商品名称: </td>
          <td><input size="20" name="goodsInfo.gname" id="gname"/></td>
        </tr>
        <tr bgcolor="white">
          <td align="center">商品类别:</td>
          <td>
            <select name="goodsInfo.goodsClassInfo.gcid" id="gcid">
               <option value="10001">水果</option>
               <option value="10002">电脑</option>
               <option value="10003">手机</option>
               <option value="10004">电视</option>
            </select>
          </td>
        </tr>
        <tr bgcolor="white">
          <td align="center">计量单位:</td>
          <td><input name="goodsInfo.gunit" id="gunit"/></td>
        </tr>
        <tr bgcolor="white">
          <td align="center">进&nbsp;&nbsp;&nbsp;&nbsp;价:</td>
          <td><input name="goodsInfo.gpin" id="gpin"/></td>
        </tr>
        <tr bgcolor="white">
           <td align="center">售&nbsp;&nbsp;&nbsp;&nbsp;价:</td>
           <td><input name="goodsInfo.gpout" id="gpout"/></td>
        </tr>
       <tr bgcolor="white">
      <td align="center">商品数量:</td>
      <td><input name="goodsInfo.gamount" id="gamount"/></td>
   </tr>
      </table>
      <table align="center">
         <tr>
           <td><img border="0" src="img/xg.gif" id="xg" onclick="check()" onmouseover="document.all.xg.src='img/xga.gif'" onmouseout="document.all.xg.src='img/xg.gif'"/></td>
           <td><img border="0" src="img/cze.gif" id="cz" onclick="document.all.mf.reset()" onmouseover="document.all.cz.src='img/czd.gif'" onmouseout="document.all.cz.src='img/cze.gif'" /></td>
         </tr>
      </table>
     </form>
  </body>
</html>
但是
<select name="goodsInfo.goodsClassInfo.gcid" id="gcid">
               <option value="10001">水果</option>
               <option value="10002">电脑</option>
               <option value="10003">手机</option>
               <option value="10004">电视</option>
            </select>
中的goodsInfo.goodsClassInfo.gcid怎么也提交不到数据库

解决方案 »

  1.   

     解决办法一:
    页面 加入struts 标签
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>把<from action="/struts Action路径"/>表单换成<html:from/><select /> 换成 
    <html:select property="goodsInfo.goodsClassInfo.gcid">
       <html:option value="10001">水果 </option> 
       <html:option value="10002">电脑 </option> 
       <html:option value="10003">手机 </option> 
       <html:option value="10004">电视 </option> 
    </html:select>
    解决办法二:
    <select name="goodsInfo.goodsClassInfo.gcid" id="gcid"> 
       <option value="10001" onclick="setSelect(this)">水果 </option> 
       <option value="10002" onclick="setSelect(this)">>电脑 </option> 
       <option value="10003" onclick="setSelect(this)">>手机 </option> 
       <option value="10004" onclick="setSelect(this)">>电视 </option> 
    </select> 
    在每个选项上些 js脚本  为 <select />设置值
    <script type="javascript">
      function setSelect(this){
         document.getElementById("gcid").value = this.value;
      }
    </script>方法一,绝对正确
    方法二, 这样写  我不能确定楼主 , 你试试吧。  
      给你个建议。
     以后发帖 提问 , 别通篇代码复制。很多人不愿看的
    问题将清楚就行了。 问题解决了 , 记得给分哟。 
      

  2.   

    你没有初始话goodsInfo里的goodsClassInfo。
      

  3.   

    private String gid; 
    private GoodsClassInfo goodsClassInfo; 
    private String gname; 
    这个位置的goodsClassInfo必须实例化要不然会出异常。