具体情况如下,我有一个实体类user已声明getset方法,而且表单里面的name写的也和实体类的成员变量一样,在controller里面的参数是User user,当我提交的时候页面
出现400错误。
网上查了好久,我也测试了,用requestMapping(value="user" ,required=false)测试了,这样就包的500错误,后来有改为requestMapping(value="user" required=true)这次又包400错误了,
求助啊!谢谢各位大神!!
requestMapping用于匹配请求路径的,你确定有required参数?
要从request中提取参数,应该用requestParam吧!
这是controller的代码
import java.sql.Timestamp;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import com.tarena.dao.AccountDao;
import com.tarena.dao.ServiceDao;
import com.tarena.entity.Account;
import com.tarena.entity.page.AccountPage;
@Controller
@RequestMapping("/account")
@SessionAttributes("accountPage")
public class AccountController extends BaseController {
@Resource
private AccountDao accountDao;
@Resource
private ServiceDao serviceDao;
@RequestMapping("/findAccount.do")
public String find(AccountPage page, Model model) {
page.setRows(accountDao.findRows(page));
model.addAttribute("accountPage", page);
List<Account> list = accountDao.findByPage(page);
model.addAttribute("accounts", list);
return "account/account_list";
}
@RequestMapping("/startAccount.do")
public String updateStart(@RequestParam("account_id") int id) {
//暂停账务账号
Account a = new Account();
a.setAccount_id(id);
a.setStatus("0");
accountDao.updateStatus(a);
return "redirect:findAccount.do";
}
@RequestMapping("/pauseAccount.do")
public String updatePause(@RequestParam("account_id") int id) {
//暂停账务账号
Account a = new Account();
a.setAccount_id(id);
a.setStatus("1");
accountDao.updateStatus(a);
//暂停其下属的业务账号
serviceDao.pauseByAccount(id);
return "redirect:findAccount.do";
}
@RequestMapping("/deleteAccount.do")
public String updateDelete(@RequestParam("account_id") int id) {
//暂停账务账号
Account a = new Account();
a.setAccount_id(id);
a.setStatus("2");
accountDao.updateStatus(a);
//删除其下属的业务账号
serviceDao.deleteByAccount(id);
return "redirect:findAccount.do";
}
@RequestMapping("/toUpdateAccount.do")
public String toUpdate(@RequestParam("account_id") int id, Model model) {
Account a = accountDao.findById(id);
model.addAttribute("account", a);
return "account/update_account";
}
@RequestMapping("/updateAccount.do")
public String update(Account account) {
accountDao.update(account);
return "redirect:findAccount.do";
}
@RequestMapping("/toAddAccount.do")
public String toAdd() {
return "account/add_account";
}
@RequestMapping("/addAccount.do")
public String add(Account account) {
account.setStatus("0");
account.setCreate_date(
new Timestamp(System.currentTimeMillis()));
accountDao.save(account);
return "redirect:findAccount.do";
}
@RequestMapping("/searchAccount.do")
@ResponseBody
public Account searchAccount(String idcardNo) {
return accountDao.findByIdcardNo(idcardNo);
}
}
这是JSP页面<%@ page pageEncoding="UTF-8" isELIgnored="false"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
达内-NetCTOSS
<br> //保存结果的提示<br> function showResult() {<br> showResultDiv(true);<br> window.setTimeout("showResultDiv(false);", 3000);<br> }<br> function showResultDiv(flag) {<br> var divResult = document.getElementById("save_result_info");<br> if (flag)<br> divResult.style.display = "block";<br> else<br> divResult.style.display = "none";<br> }</p> <pre><code> //切换资费类型 function feeTypeChange(type) { var inputArray = document.getElementById("main").getElementsByTagName("input"); if (type == 1) { inputArray[4].readOnly = true; inputArray[4].value = ""; inputArray[4].className += " readonly"; inputArray[5].readOnly = false; inputArray[5].className = "width100"; inputArray[6].readOnly = true; inputArray[6].className += " readonly"; inputArray[6].value = ""; } else if (type == 2) { inputArray[4].readOnly = false; inputArray[4].className = "width100"; inputArray[5].readOnly = false; inputArray[5].className = "width100"; inputArray[6].readOnly = false; inputArray[6].className = "width100"; } else if (type == 3) { inputArray[4].readOnly = true; inputArray[4].value = ""; inputArray[4].className += " readonly"; inputArray[5].readOnly = true; inputArray[5].value = ""; inputArray[5].className += " readonly"; inputArray[6].readOnly = false; inputArray[6].className = "width100"; } } </script> </head> <body> <!--Logo区域开始--> <div id="header"> <img src="../images/logo.png" alt="logo" class="left"/> <a href="#">[退出]</a> </div> <!--Logo区域结束--> <!--导航区域开始--> <div id="navi"> <ul id="menu"> <li><a href="../index.html" class="index_off"></a></li> <li><a href="../role/role_list.html" class="role_off"></a></li> <li><a href="../admin/admin_list.html" class="admin_off"></a></li> <li><a href="../fee/fee_list.html" class="fee_on"></a></li> <li><a href="../account/account_list.html" class="account_off"></a></li> <li><a href="../service/service_list.html" class="service_off"></a></li> <li><a href="../bill/bill_list.html" class="bill_off"></a></li> <li><a href="../report/report_list.html" class="report_off"></a></li> <li><a href="../user/user_info.html" class="information_off"></a></li> <li><a href="../user/user_modi_pwd.html" class="password_off"></a></li> </ul> </div> <!--导航区域结束--> <!--主要区域开始--> <div id="main"> <div id="save_result_info" class="save_fail">保存失败,资费名称重复!</div> <form action="addCost.do" method="post" class="main_form"> <div class="text_info clearfix"><span>资费名称:</span></div> <div class="input_info"> <input type="text" name="name" class="width300" value=""/> <span class="required">*</span> <div class="validate_msg_short">50长度的字母、数字、汉字和下划线的组合</div> </div> <div class="text_info clearfix"><span>资费类型:</span></div> <div class="input_info fee_type"> <input type="radio" name="costType" id="monthly" onclick="feeTypeChange(1);" /> <label for="monthly">包月</label> <input type="radio" name="costType" checked="checked" id="package" onclick="feeTypeChange(2);" /> <label for="package">套餐</label> <input type="radio" name="costType" id="timeBased" onclick="feeTypeChange(3);" /> <label for="timeBased">计时</label> </div> <div class="text_info clearfix"><span>基本时长:</span></div> <div class="input_info"> <input type="text" name="base_duration" value="" class="width100" /> <span class="info">小时</span> <span class="required">*</span> <div class="validate_msg_long">1-600之间的整数</div> </div> <div class="text_info clearfix"><span>基本费用:</span></div> <div class="input_info"> <input type="text" name="base_cost" value="" class="width100" /> <span class="info">元</span> <span class="required">*</span> <div class="validate_msg_long error_msg">0-99999.99之间的数值</div> </div> <div class="text_info clearfix"><span>单位费用:</span></div> <div class="input_info"> <input type="text" name="unit_cost" value="" class="width100" /> <span class="info">元/小时</span> <span class="required">*</span> <div class="validate_msg_long error_msg">0-99999.99之间的数值</div> </div> <div class="text_info clearfix"><span>资费说明:</span></div> <div class="input_info_high"> <textarea class="width300 height70" name="descr"></textarea> <div class="validate_msg_short error_msg">100长度的字母、数字、汉字和下划线的组合</div> </div> <div class="button_info clearfix"> <input type="submit" value="保存" class="btn_save" /> <input type="button" value="取消" class="btn_save" onclick="history.back();" /> </div> </form> </body> </code></pre> <p></html><br> 这是实体类account<br> package com.tarena.entity;</p> <p>import java.sql.Date;<br> import java.sql.Timestamp;</p> <p>public class Account {<br> private Integer account_id;<br> private Integer recommender_id;<br> private String login_name;<br> private String login_passwd;<br> private String status;<br> private Timestamp create_date;<br> private Timestamp pause_date;<br> private Timestamp close_date;<br> private String real_name;<br> private String idcard_no;<br> private Date birthdate;<br> private String gender;<br> private String occupation;<br> private String telephone;<br> private String email;<br> private String mailaddress;<br> private String zipcode;<br> private String qq;<br> private Timestamp last_login_time;<br> private String last_login_ip;<br> public Integer getAccount_id() {<br> return account_id;<br> }<br> public void setAccount_id(Integer accountId) {<br> account_id = accountId;<br> }<br> public Integer getRecommender_id() {<br> return recommender_id;<br> }<br> public void setRecommender_id(Integer recommenderId) {<br> recommender_id = recommenderId;<br> }<br> public String getLogin_name() {<br> return login_name;<br> }<br> public void setLogin_name(String loginName) {<br> login_name = loginName;<br> }<br> public String getLogin_passwd() {<br> return login_passwd;<br> }<br> public void setLogin_passwd(String loginPasswd) {<br> login_passwd = loginPasswd;<br> }<br> public String getStatus() {<br> return status;<br> }<br> public void setStatus(String status) {<br> this.status = status;<br> }<br> public Timestamp getCreate_date() {<br> return create_date;<br> }<br> public void setCreate_date(Timestamp createDate) {<br> create_date = createDate;<br> }<br> public Timestamp getPause_date() {<br> return pause_date;<br> }<br> public void setPause_date(Timestamp pauseDate) {<br> pause_date = pauseDate;<br> }<br> public Timestamp getClose_date() {<br> return close_date;<br> }<br> public void setClose_date(Timestamp closeDate) {<br> close_date = closeDate;<br> }<br> public String getReal_name() {<br> return real_name;<br> }<br> public void setReal_name(String realName) {<br> real_name = realName;<br> }<br> public String getIdcard_no() {<br> return idcard_no;<br> }<br> public void setIdcard_no(String idcardNo) {<br> idcard_no = idcardNo;<br> }<br> public Date getBirthdate() {<br> return birthdate;<br> }<br> public void setBirthdate(Date birthdate) {<br> this.birthdate = birthdate;<br> }<br> public String getGender() {<br> return gender;<br> }<br> public void setGender(String gender) {<br> this.gender = gender;<br> }<br> public String getOccupation() {<br> return occupation;<br> }<br> public void setOccupation(String occupation) {<br> this.occupation = occupation;<br> }<br> public String getTelephone() {<br> return telephone;<br> }<br> public void setTelephone(String telephone) {<br> this.telephone = telephone;<br> }<br> public String getEmail() {<br> return email;<br> }<br> public void setEmail(String email) {<br> this.email = email;<br> }<br> public String getMailaddress() {<br> return mailaddress;<br> }<br> public void setMailaddress(String mailaddress) {<br> this.mailaddress = mailaddress;<br> }<br> public String getZipcode() {<br> return zipcode;<br> }<br> public void setZipcode(String zipcode) {<br> this.zipcode = zipcode;<br> }<br> public String getQq() {<br> return qq;<br> }<br> public void setQq(String qq) {<br> this.qq = qq;<br> }<br> public Timestamp getLast_login_time() {<br> return last_login_time;<br> }<br> public void setLast_login_time(Timestamp lastLoginTime) {<br> last_login_time = lastLoginTime;<br> }<br> public String getLast_login_ip() {<br> return last_login_ip;<br> }<br> public void setLast_login_ip(String lastLoginIp) {<br> last_login_ip = lastLoginIp;<br> }</p> <p>}</p>