Giter VIP home page Giter VIP logo

Comments (11)

zqq90 avatar zqq90 commented on May 22, 2024

Test Code:

response.setContentType(MimeTypes.MIME_TEXT_PLAIN);
//Haha, characterEncoding is back
response.setCharacterEncoding(madvocConfig.getEncoding());

it works! 😄

from jodd.

igr avatar igr commented on May 22, 2024

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.

igr avatar igr commented on May 22, 2024

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.

zqq90 avatar zqq90 commented on May 22, 2024

but what about other Result(s)?
how about
MadvocResponseWrapper.setContentType(..)

if (contentTypeResolver.getEncoding() != null){
    characterEncoding = contentTypeResolver.getEncoding(); 
}

from jodd.

igr avatar igr commented on May 22, 2024

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

See: https://github.com/oblac/jodd/blob/master/jodd-madvoc/src/main/java/jodd/madvoc/result/RawResult.java#L47

Since no other result is changing the content type, I believe we are fine here. Make sense :)?

from jodd.

zqq90 avatar zqq90 commented on May 22, 2024

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.

igr avatar igr commented on May 22, 2024

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.

zqq90 avatar zqq90 commented on May 22, 2024

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.

igr avatar igr commented on May 22, 2024

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.

zqq90 avatar zqq90 commented on May 22, 2024

See: https://github.com/oblac/jodd/blob/master/jodd-madvoc/src/main/java/jodd/madvoc/component/MadvocController.java#L105

and #L106

a litte mistake , use encoding instead of madvocConfig.getEncoding()

from jodd.

igr avatar igr commented on May 22, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.