2015-03-16 18 views
6

Tôi gặp lỗi khi sử dụng Grails và Spring Security. Có ai đó có vấn đề như thế này.GStringImpl không thể truyền sang java.lang.String

Error | 
Exception in thread "Thread-15" 
Error | 
java.lang.ClassCastException: org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String 
Error | 
    at org.codehaus.groovy.grails.project.compiler.GrailsProjectWatcher.run(GrailsProjectWatcher.java:114) 

java.lang.IllegalArgumentException: Failed to evaluate expression 'User_name' 
+0

'grep' mã của bạn cho' User_name' và hiển thị cho chúng tôi mã xung quanh nó – cfrick

+0

"$ {my_var}". ToString Hoạt động cho tôi Cảm ơn CyberAleks – user3710320

Trả lời

20

Bạn có tạo ra tất cả các lớp (User, Vai trò ...). Lệnh của bạn trông như thế nào? Như thế này grails s2-quickstart com.testapp User Role? Kiểm tra cấu hình của bạn và thử nó như trong hướng dẫn này. Spring Security Plugin Tutorials

Thực tế, lỗi này có nghĩa là trong groovy bạn sử dụng GString như "$ {my_var}" và một số lớp mong đợi Chuỗi. Không thể tự động truyền. Nếu bạn có một số mã như thế này, bạn phải chuyển đổi nó thành chuỗi như sau: "${my_var}".toString().

+0

Đặc biệt, nếu bạn cố gán GString cho một thứ được nhập tĩnh là String (hoặc chuyển một GString cho tham số phương thức kiểu String), sau đó Groovy sẽ thực hiện chuyển đổi cho bạn, nhưng nếu bạn gán cho một cái gì đó được gõ là Object thì bạn phải tự chuyển đổi nó. –

+0

Đồng ý. Tôi nghĩ rằng vấn đề có thể là mã như def myvar = "$ {some value}" sẽ được ủy quyền cho một số lớp java trong khung bảo mật mùa xuân. – CyberAleks

Các vấn đề liên quan