嘿我从Spring开始,但是我发现了这个异常并且无法解决它 这是我的jsp
<div id ="central">
<fieldset id="formregistro">
<form:form modelAttribute="Canciones" method="POST" action="/insertCan" onSubmit="return validar()">
<legend>Registre los datos de la nueva canción.</legend>
<label for="titulo">Título de la canción:</label>
<form:input type="text" path="tit_can" size="20" id="cajaf"/>
<label for="artista">Artista:</label>
<form:select path="nom_art" id="cajaf" onclick="setArtista(this[selectedIndex].text)" >
<c:forEach var="art" items="${artList}">
<form:option value="{?art.nom_art}"/>
</c:forEach>
</form:select>
<input type="checkbox" name=checkArtista value="si" onClick="mostrarTot()">Otro:
<input type="text" path="nArtista" style="visibility:hidden"/>
<label for="album">Álbum:</label>
<form:select path="nom_alb" id="cajaf" style="visibility:hidden">
<c:forEach var="alb" items="${albList}">
<form:option value="{?alb.nom_alb}"/>
</c:forEach>
</form:select>
<input type="checkbox" name=checkAlb value="si" onClick="mostrar()">Otro:
<input type="text" path="nAlbum" style="visibility:hidden"/>
<label for="anio">Año:</label>
<form:input type="text" path="fec_can"/>
<input type="submit" value="Enviar"/>
</form:form>
</fieldset>
这是我的控制器
@Resource(name = "CancService")
CancServiceImp canservice;
@RequestMapping(method=RequestMethod.POST)
public String addModel(ModelMap model){
model.addAttribute("Canciones",new Canciones());
return("");
}
@RequestMapping("/music")
public ModelAndView music(@ModelAttribute Canciones Canciones){
try{
//canservice = new CancServiceImp();
if(canservice.artIsNull()){
return new ModelAndView("canciones/index");
}else if(canservice.albIsNull()){
List<Artista> ArtList = canservice.getArtistList();
Map<String, Object> map = new HashMap<String, Object>();
map.put("artList",ArtList);
return new ModelAndView("canciones/index", "map", map);
}
else{
List<Artista> ArtList = canservice.getArtistList();
List<Album> albList = canservice.getAlbumList();
Map<String, Object> map = new HashMap<String, Object>();
map.put("artList",ArtList);
map.put("albList", albList);
return new ModelAndView("canciones/index", "map", map);
}
}catch(NullPointerException npe){
return new ModelAndView("canciones/index");
}
}
@RequestMapping("/editCan")
public ModelAndView editCan(@RequestParam int id_can) {
//canservice = new CancServiceImp();
try{
Canciones can = canservice.getCancion(id_can);
Map<String, Object> map = new HashMap<String, Object>();
map.put("cancion",can);
return new ModelAndView("canciones/music", "map", map);
}catch(NullPointerException npe){
return new ModelAndView("canciones/dmusic");
}
}
@RequestMapping("searchmusic")
public ModelAndView search(){
//canservice = new CancServiceImp();
try{
if(canservice.artIsNull()){
return new ModelAndView("canciones/index");
}else if(canservice.albIsNull()){
List<Artista> ArtList = canservice.getArtistList();
Map<String, Object> map = new HashMap<String, Object>();
map.put("artList",ArtList);
return new ModelAndView("canciones/index", "map", map);
}else if(canservice.canIsNull()){
List<Album> AlbList = canservice.getAlbumList();
List<Artista> ArtList = canservice.getArtistList();
Map<String, Object> map = new HashMap<String, Object>();
map.put("albList", AlbList);
map.put("artList",ArtList);
return new ModelAndView("canciones/dmusic", "map", map);
}
else{
List<Canciones> CanList = canservice.getCanList();
List<Album> AlbList = canservice.getAlbumList();
List<Artista> ArtList = canservice.getArtistList();
Map<String, Object> map = new HashMap<String, Object>();
map.put("albList", AlbList);
map.put("artList",ArtList);
map.put("canList", CanList);
return new ModelAndView("canciones/dmusic", "map", map);
}
}catch(NullPointerException e){
return new ModelAndView("canciones/index");
}
}
@RequestMapping("/insertCan")
public String inserData(@ModelAttribute Canciones Canciones, @RequestParam String nAlbum, String nArtista) {
//canservice = new CancServiceImp();
if(nAlbum!=null){
Canciones.setNom_alb(nAlbum);
}
if(nArtista!=null){
Canciones.setNom_art(nArtista);
}
Artista art = new Artista();
art.setNom_art(Canciones.getNom_art());
Album alb = new Album();
alb.setNom_alb(Canciones.getNom_alb());
if (Canciones != null&&Canciones.getNom_alb()!=null&&Canciones.getNom_art()!=null) {
canservice.insertDataTot(
Canciones,
alb,
art);
}else if (Canciones.getNom_alb()!=null&&Canciones.getNom_art()!=null) {
canservice.insertDataAlbum(
alb,
art);
} else if (Canciones.getNom_art()!=null) {
canservice.insertDataArtist(art);
}
return "redirect:/searchmusic";
}
@RequestMapping("/deleteCan")
public String deleteCan(@RequestParam int id_can) {
//canservice = new CancServiceImp();
System.out.println("id = " + id_can);
canservice.deleteCan(id_can);
return "redirect:/searchmusic";
}
@RequestMapping("/deleteAlb")
public String deleteAlb(@RequestParam int id_alb) {
//canservice = new CancServiceImp();
System.out.println("id = " + id_alb);
canservice.deleteAlb(id_alb);
return "redirect:/searchmusic";
}
@RequestMapping("/deleteArt")
public String deleteArt(@RequestParam String nom_art) {
//canservice = new CancServiceImp();
int id_art = canservice.getArtistId(nom_art);
System.out.println("id_art = " + id_art);
canservice.deleteArt(id_art);
return "redirect:/searchmusic";
}
@RequestMapping("/updateCan")
public String updateCan(@ModelAttribute Canciones Canciones) {
//canservice = new CancServiceImp();
if(Canciones!=null&&Canciones.getNom_alb()!=null&&Canciones.getNom_art()!=null){
canservice.updateCan(
Canciones,
canservice.getAlbum(canservice.getAlbId(Canciones.getNom_alb(), Canciones.getNom_art())),
canservice.getArtista(canservice.getArtistId(Canciones.getNom_art())));}
else if(Canciones.getNom_alb()!=null&&Canciones.getNom_art()!=null){
canservice.updateAlb(canservice.getAlbum(canservice.getAlbId(Canciones.getNom_alb(), Canciones.getNom_art())),canservice.getArtista(canservice.getArtistId(Canciones.getNom_art())));
}else if(Canciones.getNom_art()!=null){
canservice.updateArt( canservice.getArtista(canservice.getArtistId(Canciones.getNom_art())));
}
return "redirect:/searchmusic";
}
这是例外
Estado HTTP 500 -
type Informe de Excepción
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /WEB-INF/jsp/canciones/index.jsp en línea 95
92:
<form:form modelAttribute="Canciones" method="POST"
action="/insertCan" onSubmit="return validar()"> 93:
<legend>Registre los datos de la nueva canción.</legend> 94:
<label for="titulo">Título de la canción:</label> 95:
<form:input type="text" path="tit_can" size="20" id="cajaf"/> 96:
<label for="artista">Artista:</label> 97: <form:select
path="nom_art" id="cajaf"
onclick="setArtista(this[selectedIndex].text)" > 98:
<c:forEach var="art" items="${artList}">
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
causa raíz
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'Canciones' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:198)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:164)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:127)
org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:421)
org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
org.apache.jsp.WEB_002dINF.jsp.canciones.index_jsp._jspx_meth_form_005finput_005f0(index_jsp.java:528)
org.apache.jsp.WEB_002dINF.jsp.canciones.index_jsp._jspService(index_jsp.java:261)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/7.0.22.
Apache Tomcat/7.0.22
答案 0 :(得分:1)
当发出特定请求时,jsp Canciones
中所需的模型属性<form:form modelAttribute="Canciones"
似乎不可用。
您可以尝试向控制器添加专用方法,以确保Canciones
模型始终可用于每个请求。
@ModelAttribute("Canciones")
public Canciones createModel() {
return new Canciones();
}