I remember back in the good old days of Oracle Application Server 10g R2 when i faced the same problem while developing in struts with jDeveloper 10g R2. It was indeed very difficult to finaly realize that a simple addition to orion-web.xml of the default-charset="windows-1253" would solve the problem so easily.
Now with the latest version of Oracle Application Server 10g R3 (10.1.3) i came across the same issue and i thought that i could easily solve the problem by simply doing the same thing.
I was wrong :-)
People, unfortunately i must warn you that this workaround doesn't apply to the R3 family. What you have to do now is to include
request.setCharacterEncoding("Windows-1253");
in all your JSP pages.
For those of you still developing in struts, i will show you a smarter way to automatically include this in all your pages without modifying any of these pages at all.
Have you ever "played" with the RequestProcessor ? The RequestProcessor has the ability to execute code before it goes to the Action Servlet. What you need to do here is extend the RequestProcessor so that it includes
request.setCharacterEncoding("Windows-1253");
in every call.
In jDeveloper 10g R3, create a new java class and write the following code :
package testgreek.view; //don't forget to change the name of the package to the //one that you are using
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.RequestProcessor;
public class CustomRequestProcessor extends RequestProcessor { protected boolean processPreprocess (HttpServletRequest request, HttpServletResponse response) { try{ request.setCharacterEncoding("Windows-1253"); } catch(Exception ex){ //..... } return true; }
protected void processContent(HttpServletRequest request, HttpServletResponse response) { try{ request.setCharacterEncoding("Windows-1253"); } catch(Exception ex){ //........ } super.processContent(request, response); } }
Then, go to your struts-config.xml and add the following property to your controller :
<controller> <set-property property="processorClass" value="testgreek.view.CustomRequestProcessor"> </controller>
That's it. Now every time you submit a page to the servlet, it includes the character encoding that you have selected. That means no more ????Labels: 10g, bug, character, encoding, mark, Oracle Application Server, question, R3, set |