reading the following questions (How set charset in a primefaces webapp?), i'm trying to pass as parameter to a managedBean some specials characters (like i.e.: " '´áéíóúÁÉÍÓÚ& "), using the "filterServlet" like says in the answers of the questions it's not working:
JBWEB000065: HTTP Status 500 - /utf8/utf8_test.xhtml @23,153 value="#{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}" EL Expression Unbalanced: ... #{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}
JBWEB000309: type JBWEB000066: Exception report
JBWEB000068: message /utf8/utf8_test.xhtml @23,153 value="#{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}" EL Expression Unbalanced: ... #{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}
JBWEB000069: description JBWEB000145: The server encountered an internal error that prevented it from fulfilling this request.
JBWEB000070: exception
javax.servlet.ServletException: /utf8/utf8_test.xhtml @23,153 value="#{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}" EL Expression Unbalanced: ... #{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
cl.gov.minterior.ncforms.managedbeans.UtfFilter.doFilter(UtfFilter.java:39)
JBWEB000071: root cause
javax.faces.view.facelets.TagAttributeException: /utf8/utf8_test.xhtml @23,153 value="#{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}" EL Expression Unbalanced: ... #{testBean.testEncoding(''´áéíóúÁÉÍÓÚ&')}
com.sun.faces.facelets.tag.TagAttributeImpl.<init>(TagAttributeImpl.java:115)
com.sun.faces.facelets.compiler.SAXCompiler$CompilationHandler.createAttributes(SAXCompiler.java:133)
com.sun.faces.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:259)
org.apache.xerces.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:496)
org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:180)
org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(XMLDTDValidator.java:810)
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:275)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1653)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1196)
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:555)
org.apache.xerces.jaxp.SAXParserImpl.parse(SAXParserImpl.java:289)
javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:427)
com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:403)
com.sun.faces.facelets.compiler.Compiler.compile(Compiler.java:124)
com.sun.faces.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:319)
com.sun.faces.facelets.impl.DefaultFaceletFactory.access$100(DefaultFaceletFactory.java:92)
com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:159)
com.sun.faces.facelets.impl.DefaultFaceletFactory$1.newInstance(DefaultFaceletFactory.java:157)
com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:79)
com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:74)
com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:117)
com.sun.faces.facelets.impl.DefaultFaceletCache.getFacelet(DefaultFaceletCache.java:58)
com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:256)
com.sun.faces.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:200)
com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:908)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
So far, the problems seems to be the " ' " (apos) character, because some way primefaces transform it before it's sended to the managed bean,
The code to call the managed bean is:
<h:outputText value="#{testBean.pruebaEncoding(''´áéíóúÁÉÍÓÚ&')}" />
and the managed bean:
public String pruebaEncoding(String strencoded) {
FileWriter writer;
try {
writer = new FileWriter("/desarrollo/workspaces/workspace-eclipse-mars-test/project/filter.test");
writer.write(strencoded);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return strencoded;
}
Thanks for the help
tip: it's important to the application can write the result to a file because another ant script use it to do some stuff()