发送参数boolean

时间:2016-11-02 20:30:46

标签: java parameters

此方法是每个字段中所做更改的日志,但是当发送一个布尔字段时给出错误NoSuchMethodException

当一个字段为布尔值时,这就像表中每个更改的审计表一样给出了异常

此代码



    public Campo obtenerNombreValorCampo(Field campo, Object entity) {

        Campo campoWrapper = null;

        for (Annotation a2 : campo.getDeclaredAnnotations()) {

            if (a2 instanceof Column) {
                Column c = (Column) a2;
                String nameMetodo = campo.getName().substring(0, 1).toUpperCase() + campo.getName().substring(1);
                try {
//                    if (nameMetodo.equals("Activo") || nameMetodo.equals("RequiereHuellas")) {
//                        campoWrapper = new Campo();
//                        campoWrapper.setColumna(c.name());
//                    } else {
                    Object objeto = entity.getClass().getDeclaredMethod("get" + nameMetodo).invoke(entity);
                    campoWrapper = new Campo();
                    campoWrapper.setColumna(c.name());
                    if (objeto != null) {
                        campoWrapper.setValor(objeto.toString());
                    } else {
                        campoWrapper.setValor("SIN VALOR");
                    }
                    //}

                } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
                    Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                    log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                } catch (NoSuchMethodException | SecurityException ex) {
                    Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                    log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                }

            } else if (a2 instanceof JoinColumn) {
                JoinColumn c = (JoinColumn) a2;
                String nameMetodo = campo.getName().substring(0, 1).toUpperCase() + campo.getName().substring(1);
                try {
                    //OBJETO FERANEA
                    Object objeto = entity.getClass().getDeclaredMethod("get" + nameMetodo).invoke(entity);

                    if (objeto != null) {
                        boolean poseeNombre = false;
                        Class clase = objeto.getClass();
                        for (Field f : clase.getDeclaredFields()) {//recorremos los campos
                            for (Annotation a3 : f.getDeclaredAnnotations()) {

                                if (a3 instanceof Id && !poseeNombre) {
                                    String nameMetodo2 = f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1);
                                    try {
                                        Object objeto2 = objeto.getClass().getDeclaredMethod("get" + nameMetodo2).invoke(objeto);
                                        campoWrapper = new Campo();
                                        campoWrapper.setColumna(c.name());
                                        if (objeto2 != null) {
                                            campoWrapper.setValor(objeto2.toString());
                                        } else {
                                            campoWrapper.setValor("SIN VALOR");
                                        }

                                    } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
                                        Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
                                        ex.printStackTrace();
                                        log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                                    } catch (NoSuchMethodException | SecurityException ex) {
                                        Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
                                        ex.printStackTrace();
                                        log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                                    }
                                } else if (a3 instanceof Column) {
                                    Column c2 = (Column) a3;
                                    if (c2.name().equalsIgnoreCase("NOMBRE")) {
                                        String nameMetodo2 = f.getName().substring(0, 1).toUpperCase() + f.getName().substring(1);
                                        try {
                                            Object objeto2 = objeto.getClass().getDeclaredMethod("get" + nameMetodo2).invoke(objeto);
                                            campoWrapper = new Campo();
                                            campoWrapper.setColumna(c.name());
                                            if (objeto2 != null) {
                                                campoWrapper.setValor(objeto2.toString());
                                            } else {
                                                campoWrapper.setValor("SIN VALOR");
                                            }
                                            poseeNombre = true;
                                        } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
                                            Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
                                            ex.printStackTrace();
                                            log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                                        } catch (NoSuchMethodException | SecurityException ex) {
                                            Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
                                            ex.printStackTrace();
                                            log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                                        }

                                    }
                                }
                            }
                        }

                    }

                } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) {
                    Logger.getLogger(ParserCampo.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                    log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                } catch (NoSuchMethodException | SecurityException ex) {
                    Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                    log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                } catch (Exception ex) {
                    Logger.getLogger(Auditar.class.getName()).log(Level.SEVERE, null, ex);
                    ex.printStackTrace();
                    log.error("Error al obtener el valor de campo de un entity (message): " + ex.getMessage());
                }
            }

        }
        return campoWrapper;
    }




1 个答案:

答案 0 :(得分:1)

这很正常。如果您有布尔值,则该方法不是get...,而是is...