Pessoal, acredito que seja um problema simples, mas não faço ideia de como resolver ja tentei de tudo.
Tenho os seguintes modelos:
Usuarios
[code]package MZSuporte.model;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class Usuarios implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@Column(name = "nome", nullable = false, length = 40)
private String nome;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@PrimaryKeyJoinColumn
@JoinColumn(name = "area", nullable = false)
private Area area;
@Column(name = "ramal", nullable = true, length = 4)
private String ramal;
@Column(name = "baia", nullable = true, length = 4)
private String baia;
//getters & setters[/code]
Area
[code]package MZSuporte.model;
import javax.persistence.*;
@Entity
public class Area implements java.io.Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
@Column(name = "nome", nullable = false, length = 20)
private String nome;
@Column(name = "area", nullable = true, length = 2)
private Integer area;
// getters & setters[/code]
e o seguinte jsp com o formulario para criar um novo usuario
[code]<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://jakarta.apache.org/struts/tags-html” prefix=“html” %>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
html:html
MZ TI - Suporte
Novo Usuario
<html:form action=“altUser.do” focus=“user.nome”>
| Nome: | <html:text value="${user.nome}" property=“user.nome” size=“32”/> |
| Area: | <html:select property=“user.area.id”> <c:forEach var=“narea” items="${narea}"> <html:option value="${narea.id}">${narea.nome}</html:option> </c:forEach> </html:select> |
| Ramal: | <html:text size=“3” value="${user.ramal}" property=“user.ramal”/><html:errors property=""/> |
| Baia: | <html:text size=“2” value="${user.baia}" property=“user.baia”/> |
<html:hidden value="${createuser.acao}" property=“acao”/>
<html:hidden value="${user.id}" property=“user.id”/>
<html:submit value=“Cadastrar” property=“btenviar”/>
</html:form>
</html:html>[/code]
Antes no meu modelo usuarios a area era apenas uma string esse trecho funcionava perfeitamente:
<td><html:select property="user.area">
<c:forEach var="narea" items="${narea}">
<html:option value="${narea.id}">${narea.nome}</html:option>
</c:forEach>
</html:select></td>
Agora que a area eh um outro objeto tento popular mudando o property para “user.area.id” e ele não aceita, quando acessa a pagina ele retorna JasperException e como root cause org.apache.commons.beanutils.NestedNullException: Null property value for ‘area.id’ on bean class ‘class MZSuporte.model.Usuarios’.
Segue o erro completo:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/new/newUser.jsp at line 20
17:
18:
19:
20:
21: <c:forEach var=“narea” items="${narea}">
22: <html:option value="${narea.id}">${narea.nome}</html:option>
23: </c:forEach>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.apache.commons.beanutils.NestedNullException: Null property value for ‘area.id’ on bean class ‘class MZSuporte.model.Usuarios’
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:747)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:837)
org.apache.commons.beanutils.BeanUtilsBean.getArrayProperty(BeanUtilsBean.java:542)
org.apache.commons.beanutils.BeanUtils.getArrayProperty(BeanUtils.java:211)
org.apache.struts.taglib.html.SelectTag.calculateMatchValues(SelectTag.java:248)
org.apache.struts.taglib.html.SelectTag.doStartTag(SelectTag.java:200)
org.apache.jsp.admin.new_.newUser_jsp.jspx_meth_html_005fselect_005f0(newUser_jsp.java:253)
org.apache.jsp.admin.new.newUser_jsp.jspx_meth_html_005fform_005f0(newUser_jsp.java:173)
org.apache.jsp.admin.new.newUser_jsp.jspx_meth_html_005fhtml_005f0(newUser_jsp.java:121)
org.apache.jsp.admin.new.newUser_jsp._jspService(newUser_jsp.java:88)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390).
Como eu devo referenciar a area nesse caso??
Obrigado
Att,
Vinicius Roberto