我正在用Spring框架制作一个网站。问题是只有当我将VO作为参数时,才会出现404错误。我把VO作为@ModelAttribute放在控制器中。
我用两个表列一起创建了VO的属性。我想问题是因为1-VO匹配2-表引起的,因为当我对1-VO数学1-table使用相同的方法时,没有错误。
如果有人知道的话,请让我知道这个错误发生的确切原因。
以下是消息来源。
这是第一个与VO属性匹配的表。
TAN_ASE_NO int(11)
ASE_TP_DT_CD int(11)
NM varchar(20)
XPN tinytext
WST_DT date
ASE_ST_DT_CD varchar(5)
TAN_ASE_CR_NO int(11)
TAN_ASE_ENTP_INFO int(11)
TAN_ASE_AD_FILE_NO int(11)
TAN_ASE_CHRPS_NO int(11)
这是与VO属性匹配的第二个表。
TAN_ASE_NO_HDW int(11)
HDW_FLG varchar(20)
OS_TP varchar(20)
AMG_FLG varchar(20)
HDW_MODL_NM tinytext
HDW_PST varchar(30)
HOSTNM varchar(30)
IP varchar(20)
US_USE varchar(20)
PRD_CMP varchar(30)
MDL varchar(30)
CLK varchar(10)
CPU_CNT int(11)
CR_CNT int(11)
MEMR int(11)
STRG_TOT_CAPA int(11)
ADMR varchar(20)
我用这两个表创建了一个VO类,以插入与这些表相关的数据。
public class HDW {
private int tan_ase_no;
private int ase_tp_dt_cd;
private String nm;
private String xpn;
private String wst_dt;
private int ase_st_dt_cd;
private int tan_ase_cr_no;
private int tan_ase_entp_info;
private int tan_ase_ad_file_no;
private int tan_ase_chrps_no;
private int tan_ase_no_hdw;
private String hw_flg;
private String os_tp;
private String amg_flg;
private String hw_modl_nm;
private String hw_pst;
private String hostnm;
private String ip;
private String us_use;
private String prd_cmp;
private String mdl;
private String clk;
private int cpu_cnt;
private int cr_cnt;
private int memr;
private int strg_tot_capa;
private String admr;
(省略了设置器/getter。)
最后,这里是控制器源代码部分。
public String addHdw(HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("command") HDW hdw) throws Exception{
System.out.println("$$Test for hdwControl");
System.out.println(hdw);
hdwDAO.addHdw(hdw);
return "redirect:/index.do";
}
当我删除@modelAttribute("command")HDW HDW参数时,控制台向我显示了"$$Test for hdwControl",没有任何问题。
我该怎么办才能解决这个问题?
**这是附加源**
当然,我将@ModelAttribute与html输入字段进行了匹配。
<form name="form1">
<div class="containerRight">
<article>
<header>
<h2>H/W</h2>
<input type="hidden" name="tan_ase_no" value="">
<input type="hidden" name="tan_ase_no_hdw" value="">
<input type="hidden" id="ase_tp_dt_cd" name="ase_tp_dt_cd" value="401">
</header>
<div class="articleBody">
<div class="articleBodyLeft">
<section>
<h3>BASIC</h3>
<table class="tableArticle">
<tr>
<td width="120">NAME
</td>
<td><input name="nm" type="text" id="nm" value=""></td>
</tr>
<tr>
<td>FLAG</td>
<td>
<select name="hw_flg" id="codeList600">
</select>
</td>
</tr>
<tr>
<td>OS</td>
<td>
<select name="os_tp" id="codeList700">
</select>
<label>*VIRTUALIZATION FLAG : </label>
<select name="amg_flg" id="codeList800">
</select>
</td>
</tr>
<tr>
<td width="120">MODEL</td>
<td><input type="text" name="hw_modl_nm" value=""></td>
</tr>
<tr>
<td width="120">COMPANY</td>
<td><input type="text" name="tan_ase_entp_info" value="">
</tr>
<tr>
<td width="120">POSITION</td>
<td><input type="text" name="hw_pst" value=""></td>
</tr>
<tr>
<td>DESCRIPTION</td>
<td><input type="text" name="xpn" value=""></td>
</tr>
<tr>
<td>STATUS</td>
<td>
<input type="radio" name="ase_st_dt_cd" value="501">OPERATION
<input type="radio" name="ase_st_dt_cd" value="502">UNUSED
<input type="radio" name="ase_st_dt_cd" value="503">DISCARD
</td>
</tr>
<tr>
<td>DICARD DATE</td>
<td><input type="date" name="wst_dt" value=""></td>
</tr>
</table>
</section>
<section>
<h3>INFO</h3>
<table class="tableArticle">
<tr>
<td>Hostname</td>
<td>
<input type="text" name="hostnm" id="hostnm" value="">
<label for="ip">IP : </label><input type="text" name="ip" id="ip">
</td>
</tr>
<tr>
<td>ADMIN Agent</td>
<td>
<input type="checkbox" name="admr" value="1001">SERVER
<input type="checkbox" name="admr" value="1002">SECURITY
<input type="checkbox" name="admr" value="1003">BACK-UP
</td>
</tr>
<tr>
<td>USE</td>
<td>
<input type="checkbox" name="us_use" value="901">DEVELOP
<input type="checkbox" name="us_use" value="902">TEST
<input type="checkbox" name="us_use" value="903">VERIFY
<input type="checkbox" name="us_use" value="904">OPERATE
</td>
</tr>
</table>
</section>
<section>
<h3>제원</h3><input type="button" value="TEST">
<table class="tableArticle">
<tr>
<td>CPU</td>
<td>
PRODUCTION : <input type="text" name="prd_cmp" value="">
MODEL : <input type="text" name="mdl" value="">
Clock : <input type="text" name="clk" value=""> GHz
</td>
</tr>
<tr>
<td>CPU QUANTITY</td>
<td>
<input type="text" name="cpu_cnt" value="">CPU × <input type="text" name="cr_cnt" value="">Core = 48 Core
</td>
</tr>
<tr>
<td>Memory</td>
<td>
<input type="text" name="memr" value="">GB
</td>
</tr>
<tr>
<td rowspan="2">DISK IN</td>
<td>TOTAL CAPA : 500 GB <input type="button" value="MANAGEMENT" onclick="popUp($('#tan_ase_no').val(),$('#ase_tp_dt_cd').val())"></td>
</tr>
<tr>
<td>= 100GB × 2 + 200GB × 2</td>
</tr>
<tr>
<td rowspan="2">DISK-OUT(Mount)</td>
<td>
<input type="button" value="INFO">
</td>
</tr>
<tr>
<td></td>
</tr>
</table>
</section>
<section>
<h3>Volume</h3><input type="button" value="INFO">
<table class="tableArticle">
<tr>
<td>TOTAL</td>
<td>
10.,246 GB
</td>
</tr>
</table>
</section>
<section>
<h3>ADDED FILE</h3><input type="file" value="ADD">
<table class="tableArticle">
<tr>
<td>ADDED LIST</td>
<td><input type="hidden" name="tan_ase_ad_file_no" value=""></td>
</tr>
</table>
</section>
<section>
<h3>MANAGER</h3>
<table class="tableArticle">
<tr>
<td>Main</td>
<td><input type="search" results="10" name="tan_ase_chrps_no"></td>
</tr>
<tr>
<td>Sub</td>
<td><input type="search" results="10" name=""></td>
</tr>
</table>
</section>
</div>
<div class="articleBodyRight">
<section>
<h3>CONTRACT</h3>
<table class="tableArticleRel">
<tr>
<td>Name<input type="hidden" name="tan_ase_cr_no" value=""></td>
<td><a href="#"></a></td>
</tr>
<tr>
<td>DATE</td>
<td>2012-01-05</td>
</tr>
</table>
</section>
</div>
</div>
<section class="btnDetailArea">
<button type="button">Send Message</button>
<button type="button" id="btnEdit" onclick="setEditMode()">EDIT</button>
<input id="btnSubmit" type="button" onclick="submitForm()" value="SAVE">
<button type="button">CLOSE</button>
</section>
</article>
</div>
这里的xml文件(iBatis-sqlMap)包括将HDW插入数据库的查询。
<?xml version="1.0" encoding="UTF-8" ?>
<insert id="addHdw" parameterClass="Hdw">
<![CDATA[
insert into tan_ase values (0,#ase_tp_dt_cd#,#nm#,#xpn#,#wst_dt#,#ase_st_dt_cd#,
#tan_ase_cr_no#,#tan_ase_entp_info#,#tan_ase_ad_file_no#,#tan_ase_chrps_no#)
]]>
<selectKey keyProperty="tan_ase_no_hdw" resultClass="Integer">
select LAST_INSERT_ID()
</selectKey>
insert into hdw values (#tan_ase_no_hdw#,#hw_flg#,#os_tp#,#amg_flg#,#hw_modl_nm#,#hw_pst#,
#hostnm#,#ip#,#us_use#,#prd_cmp#,#mdl#,#clk#,#cpu_cnt#,#cr_cnt#,#memr#,#strg_tot_capa#,#admr#)
@ModelAttribute注释通常用于将HTML表单输入绑定到特定类型(在您的情况下是HDW类)。它不处理与数据库的映射。
您得到的404错误可能是Spring未能绑定,因为您没有发布所有必需的字段
如果您认为问题出在ORM(对象关系映射)上,请调查您的持久性配置(Hibernate/JPA/etc)