Comments (11)
Test Code:
response.setContentType(MimeTypes.MIME_TEXT_PLAIN);
//Haha, characterEncoding is back
response.setCharacterEncoding(madvocConfig.getEncoding());
it works! 😄
from jodd.
Perfect! I always hate when setContentType
change encoding :)
I will try to build a testcase on this, so we can have test infrastructure for similar cases for Madvoc.
Thank you! I will soon release a beta snapshot!
from jodd.
Thanx again, i solved it in the same way and also by using OutputStream
as I wanted to set the content length as well, in case when server does not provide chunked transfer.
from jodd.
but what about other Result(s)?
how about
MadvocResponseWrapper.setContentType(..)
if (contentTypeResolver.getEncoding() != null){
characterEncoding = contentTypeResolver.getEncoding();
}
from jodd.
In short, the approach is the following: 1) Madvoc sets the content type and encoding first 2) if the Result wants to modify it, than its his responsibility to do everything right.
I know that MadvocResponseWrapper
seems like a single place for fixing this; but that would always append the character encoding to content type; and the purpose of the wrapper is to allow to reset it:) Let me explain. In cases when you return raw types, like for images created dynamically, returned content type would always have character encoding set; and it would look like:
content-type:image/jpeg;charset:UTF-8`
Some browsers (like IE) do not like this, and, being strict, that would not be correct. So we introduced MadvocResponseWrapper
to allow raw images to be able to reset charset and allow sending of just:
content-type:image/jpeg
Since no other result is changing the content type, I believe we are fine here. Make sense :)?
from jodd.
Well, my JsonResult
TemplateResult (instead of jsp)
even CachingPageInterceptor
have the same problem , I may fix them.
btw, do you think about a CachingPageInterceptor
for Jodd Madvoc
?
from jodd.
Yes, you are probably using Writer
to output the content; while thats correct, try using OutputStream
in your results as it would force to use the encoding...
This might be annoying, I agree, but I am not sure how to make a difference when character encoding is missing (i.e. being null
) on purpose - like in RawResult
for binary types. Let me think a bit more about this :)
Sure, I am thinking about caching, for now the only thing I am not sure is how to implement the cache validity check in most pragmatic way? You can send me your idea, no problem with that :)
from jodd.
it's a piece of cake for me figure out where should reset characterEncoding, however , we should line it out in doc for other guys.
[how about:]
MadvocResponseWrapper override .getCharacterEncoding()
so we can do it like is
String encoding = response.getCharacterEncoding();
response.setContentType(MimeTypes.MIME_TEXT_PLAIN);
response.setCharacterEncoding(encoding);
no
@In(scope = ScopeType.CONTEXT)
MadvocConfig madvocConfig;
from jodd.
Nice 👍 Please let me check first (write a test) for a RawResult
and character encodings, to see if this will cover the other use case that actually made me creating MadvocResponseWrapper
.
from jodd.
and #L106
a litte mistake , use encoding
instead of madvocConfig.getEncoding()
from jodd.
Haaa, thank you:exclamation: I've just fixed and push the changes - I hate such mistakes, please let me know if you find anything similar :smile:
from jodd.
Related Issues (20)
- JoyInit beans should be invoked after the Joy printouts
- optional return types for jodd-json HOT 3
- jodd-http set body encoding HOT 2
- Why LFUCache doesnot initialize with a loadFactor=1.0f of a Hashmap? HOT 14
- java.lang.IndexOutOfBoundsException HOT 8
- java.lang.IndexOutOfBoundsException HOT 17
- When I send one email with attachment, the attachment name is gibberish in Chinese. HOT 2
- envelopeOnly() results in lots of fetching compared to folder.search HOT 2
- java.lang.IndexOutOfBoundsException for 27 pages - tested 862_674 pages. HOT 42
- jodd-petite singleton scope bean is thread safe?? HOT 1
- petite problem: when invoke addBean will throw MalformedParametersException HOT 4
- Can you integrate Swagger Doc like Spring frame? HOT 1
- Duplicate class HOT 22
- fix jodd-db document HOT 1
- InterfaceImplementation.java ClassCastException when interface return primitive type but not number HOT 1
- [How to] register custom action annotation? HOT 1
- Required OSGi headers missing HOT 3
- IDEA: Provide PathMacros in util module HOT 1
- LRUCache has Concurrency problem HOT 5
- tag missing problem
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jodd.