Problema na hora de criar o formulario

0 respostas
vinicius_roc

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

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

Area

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

e o seguinte jsp com o formulario para criar um novo usuario

<%@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>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>MZ TI - Suporte</title>
    </head>
    <body>
        <h1 align="center">Novo Usuario</h1>
        <html:form action="altUser.do" focus="user.nome">
            <table border="0">
                <tr>
                    <td><b>Nome: </b></td>
                    <td><html:text value="${user.nome}" property="user.nome" size="32"/></td>
                </tr>
                <tr>
                    <td><b>Area: </b></td>
                    <td><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></td>
                </tr>
                <tr>
                    <td><b>Ramal: </b></td>
                    <td><html:text size="3" value="${user.ramal}" property="user.ramal"/><html:errors property=""/></td>
                </tr>
                <tr>
                    <td><b>Baia: </b></td>
                    <td><html:text size="2" value="${user.baia}" property="user.baia"/></td>
                </tr>
            </table>
            <html:hidden value="${createuser.acao}" property="acao"/>
            <html:hidden value="${user.id}" property="user.id"/>
            <html:submit value="Cadastrar" property="btenviar"/>
        </html:form>
        <p>
            <font size="-2" color="red">
                <b><html:errors/></b>
            </font>
        </p>
    </body>
</html:html>

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: Area:
20:
21:
22: ${narea.nome}
23:

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

Criado 24 de junho de 2009
Respostas 0
Participantes 1