2012-02-07 26 views
5

Ứng dụng grails của tôi sẽ không giải mã chính xác các tham số yêu cầu.Vấn đề mã hóa tham số yêu cầu Grails trong Tomcat

Trong config.groovy:

  • grails.views.gsp.encoding = "UTF-8"
  • grails.converters.encoding = "UTF-8"

Tất cả GSP tôi sử dụng contentType="text/html; charset=UTF-8" trên thị trang cũng như <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> trong các yếu tố đầu.

Tuy nhiên, khi tôi nhận được các thông số gửi từ đối tượng param trong điều khiển của tôi, ứng dụng chỉ in rác ...

Tôi đang sử dụng Grails 1.3.7 phiên bản triển khai trên Tomcat 5. plugin được cài đặt khác trừ tomcat:

ngủ đông 1.3.7 jquery 1.7.1 mùa xuân-an ninh-core 1.2.6 webxml 1,4

EDIT: Từ gỡ rối hơn nữa, tôi đã nhận thấy rằng ứng dụng này sẽ chạy tốt trong cầu cảng. Vì vậy tôi nghi ngờ nó phải là một vấn đề tomcat. Vấn đề của tôi là tương tự to this post (tôi không sử dụng plugin Shiro).

Có ai có thể trợ giúp việc này không?

+0

Nội dung trong thùng rác của cơ sở dữ liệu hay chỉ những gì được in ra? Bạn đã cài đặt plugin webxml chưa (chạy 'grails list-plugins --installed')? –

+0

từ gỡ lỗi thêm vấn đề là ở cấp web. Các giá trị đã gửi vào thời điểm chúng đến được bộ điều khiển chúng đã là rác. –

+0

Plugin được cài đặt của tôi là: hibernate 1.3.7, tomcat, jquery 1.7.1, spring-security-core 1.2.6 và webxml 1.4 –

Trả lời

8

Bạn cần thêm URIEncoding='UTF-8' vào các phần tử Connector trong conf/server.xml, ví dụ:

<Connector port='8080' protocol='HTTP/1.1' connectionTimeout='20000' 
      redirectPort='8443' URIEncoding='UTF-8' /> 

này được mô tả ở đây: https://wiki.apache.org/tomcat/FAQ/CharacterEncoding

+0

Cảm ơn bạn đã trả lời. Vấn đề của tôi là với các thông số POST thực sự. Nếu tôi hiểu các câu hỏi thường gặp, URIEncoding đúng chỉ áp dụng cho các tham số GET. Tuy nhiên, tôi đã cho nó một shot nhưng không làm việc hoặc. Nó có thể là một shot dài nhưng nó có thể là thứ tự của các bộ lọc trong web.xml được tạo ra của tôi không?Trong đó tôi có các bộ lọc sau theo thứ tự đó: springSecurityFilterChain -> sitemesh -> charEncodingFilter -> urlMapping -> hiddenHttpMethod -> grailsWebRequest –

+0

Xin lỗi, tôi không hiểu rằng bạn đang sử dụng webxml 1.4 - bạn cần sử dụng 1.4.1 để sửa lỗi thứ tự charEncodingFilter này. Bạn cũng cần nâng cấp lên phiên bản mới hơn của Spring Security Core, vì vậy bạn nên sử dụng phiên bản 1.2.7.2 (mới nhất). –

+0

Cảm ơn tất cả sự giúp đỡ Burt. –

0
edit application.properties 
add(update) line: 
plugins.webxml=1.4.1 
0

Như fas như không có kết luận cuối cùng thực hiện, tôi muốn chia sẻ expierence của tôi trong tình cảnh tương tự. Here người ta có thể tìm thêm thảo luận.

Tôi trường hợp của tôi, tôi có môi trường dev dưới các cửa sổ trên máy tính địa phương bao gồm cả MySQL địa phương. Sản xuất env - Centos 6, MySQL, Tomcat 6 đằng sau Apache.

Trong môi trường dev - mọi thứ đều là o'k, nhưng về sản xuất - không. Điều duy nhất giúp tôi - được thiết lập autoreconnect=true&useUnicode=true&characterEncoding=UTF-8 bổ sung cho cả hai khuyến nghị cho Tomcat URIEncoding='UTF-8'

Vì vậy, vấn đề nằm trong cài đặt đúng java Trình điều khiển cho MySQL.

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