2017-03-09 6 views
0

私はRC1でプロジェクトを生成する際に問題なく動作していました。プロジェクトのいくつかの作業の後、私はselect2を使用しているCRUDフィールドが突然オートコンプリートするのをやめたことに気付きました。 s2が/ entity/s2パスからデータを取得しようとすると、エラー500が発生します。select2オートコンプリートエラービュー(spring roo rc1)

enter image description here

完全なJavaコンソールエラー:

2017-03-09 11:20:46.136 WARN 42495 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No converter found capable of converting from type [ar.edu.um.programacion2.oficios.reference.Disponibilidad] to type [java.lang.String] (through reference chain: io.springlets.data.web.select2.Select2DataWithConversion["results"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No converter found capable of converting from type [ar.edu.um.programacion2.oficios.reference.Disponibilidad] to type [java.lang.String] (through reference chain: io.springlets.data.web.select2.Select2DataWithConversion["results"]) 
2017-03-09 11:20:46.137 WARN 42495 --- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No converter found capable of converting from type [ar.edu.um.programacion2.oficios.reference.Disponibilidad] to type [java.lang.String] (through reference chain: io.springlets.data.web.select2.Select2DataWithConversion["results"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: No converter found capable of converting from type [ar.edu.um.programacion2.oficios.reference.Disponibilidad] to type [java.lang.String] (through reference chain: io.springlets.data.web.select2.Select2DataWithConversion["results"]) 

ことのいずれかが参照フィールドは、現在動作していないフィールド。

@RooJavaBean 
@RooToString 
@RooJpaEntity 
@RooEquals(isJpaEntity = true) 
public class Localidad { 

    public Localidad(String nombre, String descripcion) { 
     super(); 
     this.nombre = nombre; 
     this.descripcion = descripcion; 
    } 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @Version 
    private Integer version; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @NotNull 
    private String nombre; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    private String descripcion; 


    private String googleMapsString; 


    /** 
    * TODO Auto-generated method documentation 
    * 
    * @return String 
    */ 
    public String toString() { 
     return getNombre(); 
    } 

    public String getMapString(){ 
     return "http://maps.googleapis.com/maps/api/staticmap?" + getGoogleMapsString() + "&key="; 
    } 
} 

参照フィールドが使用されているクラス:これは、そのフィールドが参照として使用されるエンティティの一つであるビューの

@RooJavaBean 
@RooToString 
@RooJpaEntity 
@RooEquals(isJpaEntity = true) 
public class Servicio { 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @Version 
    private Integer version; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @NotNull 
    private String nombre; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    private String descripcion; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @RooUploadedFile(contentType = "image/png") 
    @Lob 
    private byte[] logo; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @NotNull 
    private String telefono; 

    /** 
    * TODO Auto-generated attribute documentation 
    * 
    */ 
    @NumberFormat 
    private float puntaje; 

    @OneToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="localidad_id") 
    private Localidad localidad; 

    @OneToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="disponibilidad_id") 
    private Disponibilidad disponibilidad; 

    @OneToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="categoria_id") 
    private Categoria categoria; 

    @OneToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="prestador_id") 
    private Prestador prestador; 

    @ManyToMany 
    @JoinTable(name = "servicio_calificacion", joinColumns = @JoinColumn(name = "servicio_id"), inverseJoinColumns = @JoinColumn(name = "calificacion_id")) 
    private List<CalificacionCliente> listadecalificaciones; 


    /** 
    * TODO Auto-generated method documentation 
    * 
    * @return String 
    */ 
    public String toString() { 
     return getNombre() + " (" + getPrestador() + ")"; 
    } 
} 

一つであったことフィールドであります使用:

<!DOCTYPE html> 
<html lang="en" data-layout-decorate="~{layouts/default-layout}"> 
    <head id="head"> 

    <title data-th-text="#{label_create_entity(#{label_servicio})}"> 
     Create Servicio - oficios - SpringRoo Application</title> 

    <!-- DateTimePicker --> 
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.min.css" data-th-href="@{/webjars/datetimepicker/build/jquery.datetimepicker.min.css}" /> 

    </head> 

    <body id="body"> 

    <header role="banner"> 
     <!-- Content replaced by layout of the page displayed --> 
    </header> 

    <!-- CONTAINER --> 
    <div class="container bg-container"> 
     <!-- CONTENT --> 
     <!-- 
     Only the inner content of the following tag "section" is included 
     within the template, in the section "content" 
     --> 
     <section data-layout-fragment="content"> 
     <div class="container-fluid content" data-th-with="collectionLink=${@linkBuilder.of('ServiciosCollectionThymeleafController')}"> 

      <h1 data-th-text="#{label_create_entity(#{label_servicio})}">Create Servicio</h1> 

      <!-- FORM --> 
      <form class="form-horizontal validate" method="POST" data-th-object="${servicio}" data-th-action="@{${collectionLink.to('create').with('servicio', servicio.id)}}"> 

      <fieldset id="containerFields"> 
       <legend class="sr-only" data-th-text="#{label_data_entity(#{label_servicio})}">Servicio data </legend> 

<div class="form-group has-error has-feedback" data-z="15c04ac1" id="servicio-nombre-field" data-th-classappend="${#fields.hasErrors('nombre')}? 'has-error has-feedback'" data-th-class="form-group"> 
    <label for="nombre" class="col-md-3 control-label" data-th-text="#{label_servicio_nombre}">nombre</label> 
    <div class="col-md-6"> 
    <input id="nombre" name="nombre" data-th-value="*{{nombre}}" type="text" class="form-control" placeholder="nombre" data-th-placeholder="#{label_servicio_nombre}" data-toggle="tooltip" aria-describedby="nombreStatus" required="required" /> 
     <span data-th-classappend="${#fields.hasErrors('nombre')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('nombre')}" aria-hidden="true"></span> 
     <span id="nombre-error" class="help-block" data-th-if="${#fields.hasErrors('nombre')}" data-th-errors="*{nombre}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="8d2c287d" id="servicio-descripcion-field" data-th-classappend="${#fields.hasErrors('descripcion')}? 'has-error has-feedback'" data-th-class="form-group"> 
    <label for="descripcion" class="col-md-3 control-label" data-th-text="#{label_servicio_descripcion}">descripcion</label> 
    <div class="col-md-6"> 
    <input id="descripcion" name="descripcion" data-th-value="*{{descripcion}}" type="text" class="form-control" placeholder="descripcion" data-th-placeholder="#{label_servicio_descripcion}" data-toggle="tooltip" aria-describedby="descripcionStatus" /> 
     <span data-th-classappend="${#fields.hasErrors('descripcion')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('descripcion')}" aria-hidden="true"></span> 
     <span id="descripcion-error" class="help-block" data-th-if="${#fields.hasErrors('descripcion')}" data-th-errors="*{descripcion}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="54220f01" id="servicio-logo-field" data-th-classappend="${#fields.hasErrors('logo')}? 'has-error has-feedback'" data-th-class="form-group"> 
    <label for="logo" class="col-md-3 control-label" data-th-text="#{label_servicio_logo}">logo</label> 
    <div class="col-md-3"> 
    <input id="logo" name="logo" data-th-value="*{{logo}}" type="text" class="form-control inputmask" placeholder="logo" data-th-placeholder="#{label_servicio_logo}" data-toggle="tooltip" aria-describedby="logoStatus" data-inputmask-alias="numeric" data-inputmask-digits="2" /> 
     <span data-th-classappend="${#fields.hasErrors('logo')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('logo')}" aria-hidden="true"></span> 
     <span id="logo-error" class="help-block" data-th-if="${#fields.hasErrors('logo')}" data-th-errors="*{logo}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="f1acb8e1" id="servicio-telefono-field" data-th-classappend="${#fields.hasErrors('telefono')}? 'has-error has-feedback'" data-th-class="form-group"> 
    <label for="telefono" class="col-md-3 control-label" data-th-text="#{label_servicio_telefono}">telefono</label> 
    <div class="col-md-6"> 
    <input id="telefono" name="telefono" data-th-value="*{{telefono}}" type="text" class="form-control" placeholder="telefono" data-th-placeholder="#{label_servicio_telefono}" data-toggle="tooltip" aria-describedby="telefonoStatus" required="required" /> 
     <span data-th-classappend="${#fields.hasErrors('telefono')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('telefono')}" aria-hidden="true"></span> 
     <span id="telefono-error" class="help-block" data-th-if="${#fields.hasErrors('telefono')}" data-th-errors="*{telefono}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="3c00987d" id="servicio-localidad-field" data-th-classappend="${#fields.hasErrors('localidad')}? 'has-error has-feedback'" data-th-class="form-group" data-th-with="collectionLink=${@linkBuilder.of('LocalidadsCollectionThymeleafController')}"> 
    <label for="localidad" class="col-md-3 control-label" data-th-text="#{label_servicio_localidad}">Localidad</label> 
    <div class="col-md-6"> 
     <!-- Select2 --> 
     <select data-th-field="*{localidad}" class="form-control dropdown-select-ajax" data-allow-clear="true" data-data-ajax--url="${collectionLink.to('select2')}" data-ajax--cache="true" data-ajax--delay="250" data-ajax--data-type="json" data-data-placeholder="#{info_select_an_option}"> 
      <option data-th-unless="*{localidad} == null" data-th-value="*{localidad.id}" data-th-text="*{{localidad}}" selected="selected">Localidad</option> 
     </select> 
     <span data-th-classappend="${#fields.hasErrors('localidad')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('localidad')}" aria-hidden="true"></span> 
     <span id="localidad-error" class="help-block" data-th-if="${#fields.hasErrors('localidad')}" data-th-errors="*{localidad}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="19c21a81" id="servicio-disponibilidad-field" data-th-classappend="${#fields.hasErrors('disponibilidad')}? 'has-error has-feedback'" data-th-class="form-group" data-th-with="collectionLink=${@linkBuilder.of('DisponibilidadsCollectionThymeleafController')}"> 
    <label for="disponibilidad" class="col-md-3 control-label" data-th-text="#{label_servicio_disponibilidad}">Disponibilidad</label> 
    <div class="col-md-6"> 
     <!-- Select2 --> 
     <select data-th-field="*{disponibilidad}" class="form-control dropdown-select-ajax" data-allow-clear="true" data-data-ajax--url="${collectionLink.to('select2')}" data-ajax--cache="true" data-ajax--delay="250" data-ajax--data-type="json" data-data-placeholder="#{info_select_an_option}"> 
      <option data-th-unless="*{disponibilidad} == null" data-th-value="*{disponibilidad.id}" data-th-text="*{{disponibilidad}}" selected="selected">Disponibilidad</option> 
     </select> 
     <span data-th-classappend="${#fields.hasErrors('disponibilidad')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('disponibilidad')}" aria-hidden="true"></span> 
     <span id="disponibilidad-error" class="help-block" data-th-if="${#fields.hasErrors('disponibilidad')}" data-th-errors="*{disponibilidad}">Error message.</span> 
    </div> 
</div> 
<div class="form-group has-error has-feedback" data-z="1d95a73d" id="servicio-categoria-field" data-th-classappend="${#fields.hasErrors('categoria')}? 'has-error has-feedback'" data-th-class="form-group" data-th-with="collectionLink=${@linkBuilder.of('CategoriasCollectionThymeleafController')}"> 
    <label for="categoria" class="col-md-3 control-label" data-th-text="#{label_servicio_categoria}">Categoria</label> 
    <div class="col-md-6"> 
     <!-- Select2 --> 
     <select data-th-field="*{categoria}" class="form-control dropdown-select-ajax" data-allow-clear="true" data-data-ajax--url="${collectionLink.to('select2')}" data-ajax--cache="true" data-ajax--delay="250" data-ajax--data-type="json" data-data-placeholder="#{info_select_an_option}"> 
      <option data-th-unless="*{categoria} == null" data-th-value="*{categoria.id}" data-th-text="*{{categoria}}" selected="selected">Categoria</option> 
     </select> 
     <span data-th-classappend="${#fields.hasErrors('categoria')}? 'glyphicon glyphicon-remove form-control-feedback'" class="glyphicon glyphicon-remove form-control-feedback" data-th-if="${#fields.hasErrors('categoria')}" aria-hidden="true"></span> 
     <span id="categoria-error" class="help-block" data-th-if="${#fields.hasErrors('categoria')}" data-th-errors="*{categoria}">Error message.</span> 
    </div> 
</div> 
      </fieldset> 


       <!-- buttons form --> 
       <div class="form-group"> 
       <div class="col-md-9 col-md-offset-3"> 
        <button type="submit" class="btn btn-primary" data-th-text="#{label_save}">Save</button> 
        <button type="reset" class="btn btn-default" onclick="window.history.back()" data-th-text="#{label_reset}">Cancel</button> 
       </div> 
       </div> 

      </form> 
      <!-- /FORM --> 

     </div> 

     </section> 
     <!-- /CONTENT --> 
    </div> 
    <!-- /CONTAINER --> 

    <footer class="container"> 
    <!-- Content replaced by layout of the page displayed --> 
    </footer> 

    <!-- JavaScript 
    ================================================== --> 
    <!-- Placed at the end of the document so that the pages load faster --> 
    <!-- JavaScript loaded by layout of the page displayed --> 
    <!-- 
     Only the inner content of the following tag "javascript" is included 
     within the template, in the div "javascript" 
     --> 
    <div data-layout-fragment="javascript"> 

    <!-- DateTimePicker --> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.4/build/jquery.datetimepicker.full.min.js" data-th-src="@{/webjars/datetimepicker/build/jquery.datetimepicker.full.min.js}"></script> 
    <script src="../../static/public/js/datetimepicker-defaults.js" data-th-src="@{/public/js/datetimepicker-defaults.js}"></script> 

    <!-- jquery.inputmask --> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.3.1/jquery.inputmask.bundle.min.js" data-th-src="@{/webjars/jquery.inputmask/min/jquery.inputmask.bundle.min.js}"></script> 
    <script type="text/javascript" data-th-inline="javascript"> 
        (function(jQuery) { 
         jQuery(document) 
           .ready(
             function() { 
              Inputmask 
                .extendAliases({ 
                 'numeric' : { 
                  'groupSeparator' : /*[[#{label_inputmask_groupSeparator}]]*/'.', 
                  'radixPoint' : /*[[#{label_inputmask_radixPoint}]]*/',' 
                 }, 
                 'currency' : { 
                  'prefix' : /*[[#{label_inputmask_prefix}]]*/'', 
                  'suffix' : /*[[#{label_inputmask_suffix}]]*/' €' 
                 } 
                }); 
             }); 
        })(jQuery); 
     </script> 
    <script src="../../static/public/js/inputmask-defaults.js" data-th-src="@{/public/js/inputmask-defaults.js}"></script> 

    <!-- JQuery Validation --> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js" data-th-src="@{/webjars/jquery-validation/dist/jquery.validate.min.js}"> 
      </script> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/additional-methods.min.js" data-th-src="@{/webjars/jquery-validation/dist/additional-methods.min.js}"> 
      </script> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/localization/messages_es.js" data-th-src="@{/webjars/jquery-validation/src/localization/messages_}+${#locale.language}+'.js'" data-th-if="${#locale.language} != 'en'"> 
      </script> 
    <script src="../../static/public/js/validation-defaults.js" data-th-src="@{/public/js/validation-defaults.js}"> 
      </script> 

    <script type="text/javascript" data-th-inline="javascript"> 
        (function(jQuery) { 
         jQuery(document) 
           .ready(
             function() { 
              jQuery 
                .extend(
                  jQuery.validator.messages, 
                  { 
                   'dateformat' : /*[[#{error_invalid_date}]]*/'Please enter a correct date/time', 
                   'inputmask' : /*[[#{error_invalid_maskValue}]]*/'Please enter a valid value', 
                  }); 
             }); 
        })(jQuery); 
      </script> 

    </div> 

    </body> 

</html> 

Log.roo

// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-06 20:50:24 
project setup --topLevelPackage ar.edu.um.programacion2.oficios --java 8 
jpa setup --database MYSQL --provider HIBERNATE --hostName 127.0.0.1 --databaseName oficiosdb --userName root 
entity jpa --class ~.reference.Persona 
field string --fieldName username --unique 
field string --fieldName password --notNull 
field string --fieldName email --unique 
field string --fieldName telefono 
field file --fieldName avatar --contentType PNG 
entity jpa --class ~.domain.Prestador --extends ~.reference.Persona 
field string --fieldName razonsocial --notNull 
field string --fieldName oficio --notNull 
entity jpa --class ~.reference.Disponibilidad 
field string --fieldName franjahoraria --notNull 
field string --fieldName descripcion 
entity jpa --class ~.reference.Localidad 
field string --fieldName nombre --notNull 
field string --fieldName descripcion 
entity jpa --class ~.reference.Categoria 
field string --fieldName nombre --notNull 
field string --fieldName descripcion 
enum type --class ~.reference.TipoCalif 
enum constant --name POSITIVO 
enum constant --name NEGATIVO 
enum constant --name NEUTRAL 
entity jpa --class ~.domain.Cliente --extends ~.reference.Persona 
field string --fieldName nombre --notNull 
field string --fieldName apellido --notNull 
field string --fieldName domicilio 
field string --fieldName domicilio2 
entity jpa --class ~.domain.Calificacion 
field string --fieldName comentario --notNull 
field enum --fieldName tipo --type ~.reference.TipoCalif 
entity jpa --class ~.domain.CalificacionCliente --extends ~.domain.Calificacion 
entity jpa --class ~.domain.Servicio 
field string --fieldName nombre --notNull 
field string --fieldName descripcion 
field file --fieldName logo --contentType PNG 
field string --fieldName telefono --notNull 
field number --fieldName puntaje --type float 
entity jpa --class ~.domain.CalificacionPrestador --extends ~.domain.Calificacion 
repository jpa --all 
finder add --name findByTelefono --entity ~.domain.Servicio 
finder add --name findByNombreLike --entity ~.domain.Servicio 
finder add --name findByPuntaje --entity ~.domain.Servicio 
finder add --name findByUsername --entity ~.domain.Cliente 
finder add --name findByUsername --entity ~.domain.Prestador 
finder add --name findByEmail --entity ~.domain.Cliente 
finder add --name findByEmail --entity ~.domain.Prestador 
service --all 
web mvc setup 
web mvc view setup --type THYMELEAF 
web mvc controller --all --responseType THYMELEAF 
web mvc templates setup --type THYMELEAF 
web mvc language --code es --useAsDefault 
// script --file script_roo 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-06 21:19:16 
help 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-07 09:03:07 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-07 20:12:48 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 01:34:17 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 01:34:37 
web mvc finder --entity ~.domain.Servicio 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 02:28:28 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 02:28:44 
web mvc finder --all 
web mvc finder --all 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 02:29:31 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 02:29:39 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 02:29:54 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 02:30:11 
hint 
help 
web mvc finder --all 
web mvc finder --entity ~.domain.Cliente 
web mvc finder --all 
web mvc finder --all --responseType THYMELEAF 
web mvc finder --entity ~.domain.Servicio --responseType THYMELEAF 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 03:13:33 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 03:14:23 
hint 
hint finders 
finder add --entity ~.domain.Servicio --name findByCategoria 
finder add --entity ~.domain.Servicio --name queryByCategoria 
finder add --entity ~.reference.Categoria --name findByNombre 
security setup --provider SPRINGLETS_JPA 
entity jpa --class ~.domain.Administrador --extends ~.reference.Persona 
web mvc controller --entity ~.domain.Administrador 
service --entity ~.domain.Administrador 
repository jpa --entity ~.domain.Administrador 
service --entity ~.domain.Administrador 
web mvc controller --entity ~.domain.Administrador 
web mvc controller --entity ~.domain.Administrador --responseType THYMELEAF 
finder add --entity ~.reference.Persona --name findByUsername 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-08 08:02:54 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-08 21:06:10 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-09 09:30:10 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log opened at 2017-03-09 10:08:32 
// Spring Roo 2.0.0.RC1 [rev 28015e3] log closed at 2017-03-09 15:51:20 

注:まず、私は春のセキュリティが問題だと思ったが、私は、ユーザーの許可を与えたときに、ユーザーがそのエンティティの一覧を表示する権限を持っていましたが、いなかった原因問題はエラー403から私が現在持っている500に変わった。 その後、私は完全に立ち往生した。私は再びすべてのビューを生成しようとしましたが効果はありません。

おかげ

+0

この問題をチェックできるようにエラーをエミュレートするlog.rooファイルを提供できますか?よろしく、 – jcgarcia

+0

私は私のlog.rooを追加しましたが、私は本当にそれを再現する方法を知らない。 – holyknight

+0

私はあなたの提供された 'log.roo'を実行しましたが、列挙されたselect2フィールドだけが生成されました... ServicioとDisponibilidadの間に' @ OneToOne'という関係をどうやって入れましたか?手動でやっていますか?よろしく、 – jcgarcia

答えて

2

あなたは春のセキュリティの設定クラスおよびコンバータの登録をご登場しているエラーで抱えている問題についてのあなたの最後のコメントの後、私はあなたの問題がどこにあるか知っています。

数週間前、私は春のセキュリティに問題が検出され、私は彼らのリポジトリに次の問題を作成しました:

https://github.com/spring-projects/spring-security/issues/4202

@Configurationクラスは、コードのように(WebSecurityConfigurerAdapter抽象クラスを拡張する場合のように思えますいくつかのコンポーネントは、formattersがSpringコンテキストに登録される前に@AutowiredConversionServiceインスタンスにしようとしているので、addFormattersメソッドにはフォーマッタは含まれていません。あなたの問題を解決し、あなたのプロジェクトに春のセキュリティを使用することができます

簡単な回避策は、@Overrideにせずに、生成SecurityConfigurationクラスのsetContentNegotiationStrategy方法は@Autowired注釈が含まれています。

次の例は、このメソッドを正しくオーバーライドする方法を示しています。これはあなたの問題を解決した場合、あなたcomment on the issueあなたは同じ問題を抱えているということは素晴らしいことだろう

https://github.com/jcagarcia/proofs/blob/master/spring-security-and-formatters/src/main/java/org/springframework/roo/petclinic/config/security/SecurityConfiguration.java#L54

(このサンプルではコードがコメントしています)。

すべての情報をお寄せいただきありがとうございます。

+0

ありがとう!私は家に到着し、あなたに知らせるときにこれをチェックします。 – holyknight

+1

神聖なsh * tそれは魅力のように働いた!私は、このバグのために、1週間ほどプロジェクトに立ち往生していました。私はあなたの答えをすでに正しいものとしてマークしました。 これについて春のセキュリティのgitの問題にコメントしています。ありがとう! – holyknight

関連する問題