DISIC / observatoire

🕵️‍♀️ Observatoire de la qualité des démarches en ligne
https://observatoire.numerique.gouv.fr/
GNU Lesser General Public License v3.0
10 stars 4 forks source link

Formulaire JDMA : les émojis posent problèmes dans tous les champs en saisie libre #1066

Open AnthonyBrunelli opened 2 years ago

AnthonyBrunelli commented 2 years ago

Message reçu:

image

AnthonyBrunelli commented 2 years ago

Effectivement, test effectué en prod par Joffrey sur une démarche de test. Après saisie d'émojis dans le champs en saisie libre "souhaitez-vous nous en dire davantage" : message d'erreur: image

jrenauxdinum commented 2 years ago

Voilà ce qui est affiché quand je clique sur "More details" : org.xwiki.rendering.macro.MacroExecutionException: Failed to evaluate Velocity Macro for content [#set ($demarcheId = "$!request['Avis.Code.AvisClass_0_demarche']")

set ($step = "$!request['avis-form-step']")

set ($avisIdAttributeKey = "${demarcheId}-avis-id")

set ($avisId = $request.session.getAttribute($avisIdAttributeKey))

set ($logger = $services.logging.getLogger($doc.fullName))

if ($step == 'initial-step')

First we check that the provided API key is valid. If it's not the case, redirect to home page.

set ($apiKeyOK = false)

set ($receivedKey = "$!request.get('Avis.Code.AvisClass_0_apiKey')")

if ($receivedKey == '')

## No key received, accept avis anyway.
## Temporary implementation allowing to still accept avis coming directly from the site and also to preserve legacy URLs without api key at all
#set ($apiKeyOK = true)

else

#set ($demarchePage = $xwiki.getDocument($demarcheId))
#set ($embedPage = $xwiki.getDocumentAsAuthor("Demarches.Embed.${demarchePage.name}"))
#set ($embedObject = $embedPage.getObject($EMBED_CLASS, 'key', $receivedKey))
#if ($embedObject && $embedObject != $NULL)
  #set ($apiKeyOK = true)
#end

end

if ($apiKeyOK)

## Create an avis only if there is no avis in the session that matches the current demarche
## in case there is, the existing avis will get updated.
#if ($avisId && $xwiki.exists("Avis.$avisId"))
  ## Get avis document with programming rights, because Avis are not available to guests.
  $logger.warn("An existing avis was found in the session for demarche ${demarcheId}: ${avisId}")
  #set ($target = $xwiki.getDocumentAsAuthor("Avis.$avisId"))
  #set ($discard = $target.updateObjectFromRequest('Avis.Code.AvisClass'))
  #set ($object = $target.getObject('Avis.Code.AvisClass'))
#end
## Create new avis only if target has not been set already
#if (!$target)
  #set ($uin = $services.uin.getNext('avis'))
  #set ($target = $xwiki.getDocumentAsAuthor("Avis.${uin}"))
  #set ($object = $target.addObjectFromRequest('Avis.Code.AvisClass'))
  #if ($request.session && $request.session.id)
    #set ($sessionId = $request.session.id)
    #set ($discard = $object.set("sessionId", $sessionId))
  #end
#end
#validateAvis($object)
#if ($validated)
  ## Save with programming rights as the current user will not have the right to edit the Avis document
  #set ($discard = $target.saveWithProgrammingRights())
#else
  $logger.warn('An attempt to store an invalid avis was performed.')
  $response.sendRedirect($xwiki.getURL('Main.WebHome'))
#end

else

$logger.warn('An attempt to store an avis with an invalid API key was attempted.')
$response.sendRedirect($xwiki.getURL('Main.WebHome'))

end

elseif ($step == 'second-form-screen' || $step == 'third-form-screen')

if ($avisId != $NULL && $xwiki.exists("Avis.${avisId}"))

#set ($target = $xwiki.getDocumentAsAuthor("Avis.${avisId}"))
#set ($discard = $target.updateObjectFromRequest('Avis.Code.AvisClass'))
#set ($object = $target.getObject('Avis.Code.AvisClass'))
#validateAvis($object)
#if($validated)
  #set ($discard = $target.saveWithProgrammingRights())
#else
  $logger.warn('An attempt to store an invalid avis was performed.')
  $response.sendRedirect($xwiki.getURL('Main.WebHome'))
#end

else

$logger.warn('An attempt to update an invalid avis was performed.')
$response.sendRedirect($xwiki.getURL('Main.WebHome'))

end

end

We check that the avis exists, we store its id in the session and we define the next step.

if ($target && $xwiki.exists($target.fullName))

$request.session.setAttribute($avisIdAttributeKey, $target.name)

if ($step == 'initial-step')

## If 'modalite' is not 'autrement', then the next step is 'second-form-screen', otherwise it's 'final-step'.
#set ($object = $target.getObject('Avis.Code.AvisClass'))
#if ($object.getValue('modalite') != 'autrement')
  $request.session.setAttribute('avis-form-step', 'second-form-screen')
#else
  $request.session.setAttribute('avis-form-step', 'final-step')
#end

elseif ($step == 'second-form-screen')

$request.session.setAttribute('avis-form-step', 'final-step')

end

end

if ("$!request.xredirect" != '')

$response.sendRedirect($request.xredirect)

else

$response.sendRedirect($xwiki.getURL('Main.WebHome'))

end]

at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:139)
at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:52)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.evaluateBlock(AbstractScriptMacro.java:286)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:182)
at org.xwiki.rendering.macro.script.AbstractScriptMacro.execute(AbstractScriptMacro.java:58)
at org.xwiki.rendering.internal.transformation.macro.MacroTransformation.transform(MacroTransformation.java:272)
at org.xwiki.rendering.internal.transformation.DefaultRenderingContext.transformInContext(DefaultRenderingContext.java:183)
at org.xwiki.rendering.internal.transformation.DefaultTransformationManager.performTransformations(DefaultTransformationManager.java:95)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:263)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:133)
at org.xwiki.display.internal.DocumentContentDisplayer.display(DocumentContentDisplayer.java:58)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:96)
at org.xwiki.display.internal.DefaultDocumentDisplayer.display(DefaultDocumentDisplayer.java:39)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:123)
at org.xwiki.sheet.internal.SheetDocumentDisplayer.display(SheetDocumentDisplayer.java:52)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:68)
at org.xwiki.display.internal.ConfiguredDocumentDisplayer.display(ConfiguredDocumentDisplayer.java:42)
at com.xpn.xwiki.doc.XWikiDocument.display(XWikiDocument.java:1160)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1201)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1178)
at com.xpn.xwiki.doc.XWikiDocument.getRenderedContent(XWikiDocument.java:1209)
at com.xpn.xwiki.api.Document.getRenderedContent(Document.java:713)
at sun.reflect.GeneratedMethodAccessor388.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:567)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.xwiki.velocity.introspection.TryCatchDirective.render(TryCatchDirective.java:87)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluateInternal(DefaultVelocityEngine.java:259)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:222)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:361)
at com.xpn.xwiki.internal.template.InternalTemplateManager.evaluateContent(InternalTemplateManager.java:820)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:696)
at com.xpn.xwiki.internal.template.InternalTemplateManager.lambda$renderFromSkin$0(InternalTemplateManager.java:671)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:85)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:670)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:649)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:635)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2174)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:2152)
at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:960)
at sun.reflect.GeneratedMethodAccessor278.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:369)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:216)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:311)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:230)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluateInternal(DefaultVelocityEngine.java:259)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:222)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:361)
at com.xpn.xwiki.internal.template.InternalTemplateManager.evaluateContent(InternalTemplateManager.java:820)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:696)
at com.xpn.xwiki.internal.template.InternalTemplateManager.lambda$renderFromSkin$0(InternalTemplateManager.java:671)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:85)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:670)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:649)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:635)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2174)
at com.xpn.xwiki.XWiki.parseTemplate(XWiki.java:2152)
at com.xpn.xwiki.api.XWiki.parseTemplate(XWiki.java:960)
at sun.reflect.GeneratedMethodAccessor278.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395)
at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384)
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:369)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:216)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:311)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:230)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:207)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluateInternal(DefaultVelocityEngine.java:259)
at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:222)
at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:361)
at com.xpn.xwiki.internal.template.InternalTemplateManager.evaluateContent(InternalTemplateManager.java:820)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:696)
at com.xpn.xwiki.internal.template.InternalTemplateManager.lambda$renderFromSkin$0(InternalTemplateManager.java:671)
at com.xpn.xwiki.internal.security.authorization.DefaultAuthorExecutor.call(DefaultAuthorExecutor.java:85)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:670)
at com.xpn.xwiki.internal.template.InternalTemplateManager.renderFromSkin(InternalTemplateManager.java:649)
at com.xpn.xwiki.internal.template.InternalTemplateManager.render(InternalTemplateManager.java:635)
at com.xpn.xwiki.internal.template.DefaultTemplateManager.render(DefaultTemplateManager.java:78)
at com.xpn.xwiki.XWiki.evaluateTemplate(XWiki.java:2174)
at com.xpn.xwiki.web.Utils.parseTemplate(Utils.java:180)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:462)
at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:209)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:112)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.xwiki.wysiwyg.filter.ConversionFilter.doFilter(ConversionFilter.java:127)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337)
at org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Caused by: org.xwiki.velocity.XWikiVelocityException: Failed to evaluate content with id [xwiki:Avis.Code.AvisHandler] at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:227) at com.xpn.xwiki.render.DefaultVelocityManager.evaluate(DefaultVelocityManager.java:361) at org.xwiki.rendering.internal.macro.velocity.VelocityMacro.evaluateString(VelocityMacro.java:131) ... 169 more Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'saveWithProgrammingRights' in class com.xpn.xwiki.api.Document threw exception com.xpn.xwiki.XWikiException: Error number 3201 in 3: Exception while saving document xwiki:Avis.5074088 at 272:xwiki:Avis.Code.AvisHandler[line 61, column 26] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:243) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:187) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:280) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:567) at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTElseIfStatement.render(ASTElseIfStatement.java:92) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:106) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:342) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluateInternal(DefaultVelocityEngine.java:259) at org.xwiki.velocity.internal.DefaultVelocityEngine.evaluate(DefaultVelocityEngine.java:222) ... 171 more Caused by: com.xpn.xwiki.XWikiException: Error number 3201 in 3: Exception while saving document xwiki:Avis.5074088 at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:679) at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:151) at com.xpn.xwiki.store.XWikiCacheStore.saveXWikiDoc(XWikiCacheStore.java:145) at com.xpn.xwiki.XWiki.saveDocument(XWiki.java:1790) at com.xpn.xwiki.api.Document.saveDocument(Document.java:2521) at com.xpn.xwiki.api.Document.saveWithProgrammingRights(Document.java:2437) at com.xpn.xwiki.api.Document.saveWithProgrammingRights(Document.java:2417) at sun.reflect.GeneratedMethodAccessor563.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:395) at org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:384) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:173) ... 185 more Caused by: org.hibernate.HibernateException: Failed to commit or rollback transaction. Root cause [] at com.xpn.xwiki.internal.store.hibernate.HibernateStore.endTransaction(HibernateStore.java:508) at com.xpn.xwiki.store.XWikiHibernateBaseStore.endTransaction(XWikiHibernateBaseStore.java:695) at com.xpn.xwiki.store.XWikiHibernateStore.saveXWikiDoc(XWikiHibernateStore.java:670) ... 197 more Caused by: org.hibernate.exception.GenericJDBCException: could not insert: [com.xpn.xwiki.objects.LargeStringProperty] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2454) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2874) at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:184) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383) at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:133) at com.xpn.xwiki.internal.store.hibernate.HibernateStore.endTransaction(HibernateStore.java:500) ... 199 more Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\xA4\x93\xF0\x9F...' for column 'XWL_VALUE' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2526) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2673) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2549) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5098) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:98) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2437) ... 210 more

AnthonyBrunelli commented 2 years ago

Même problème sur tous les champs en saisie libre (champs "autres")...

lucaa commented 2 years ago

Normalement c'est une question d'encodage de la base de données de observatoire.numerique.gouv.fr mais XWiki ne supporte pas l'encodage utf8mb4 avec Mysql avant la version de XWiki 11.3-rc-1 (voir https://jira.xwiki.org/browse/XWIKI-15215 ). Comme l'observatoire est actuellement sous XWiki 9.11.3, il faudra prévoir une mise à jour avant de pouvoir accepter les emojis dans les champs de saisie libre.

Par contre, ce qui pourrait être exploré est une meilleure erreur pour l'utilisateur, voir le nettoyage des emojis de ces champs (ça devrait être possible, techniquement, d'exclure tous les caractères au delà d'une valeur donnée du codepoint).

AnthonyBrunelli commented 2 years ago

Vu avec Anca: montée de version longue et coûteuse à cause de toutes les personnalisations (spécifiques) et base de données énormes. Alternative: ne pas stocker les émojis, sans avoir un message d'erreur moche. Il faut bien signaler à l'utilisateur "Pas d'émoji".

AnthonyBrunelli commented 2 years ago

La mise à jour pourra être faite dans le cadre de la refonte.

AnthonyBrunelli commented 2 years ago

Question d' @ugodtn pour @lucaa : est-il possible de remplacer l'émoji par son unicode ? Par exemple en mettant : [emoji 1F600] ça permettrait de ne pas perdre d'information et de ne pas avoir de blocage.

lucaa commented 2 years ago

: est-il possible de remplacer l'émoji par son unicode ? Par exemple en mettant : [emoji 1F600]

ça doit être tout aussi facile que de les éliminer complètement, je dirais.

AnthonyBrunelli commented 2 years ago

Vu aussi avec @jrenauxdinum ok pour la solution proposée par Ugo si pas compliqué, ça nous semble optimum.

revolunet commented 5 months ago

apparement ce souci est toujours d'actualité et impacte toutes les démarches 😢

je ne sais pas si mon avis a bien été pris en compte

311515269-1e159e74-d32d-454f-beaf-580a365d4a48 311515280-d9b88bf9-a2a7-4e33-96e9-7a174badfe03
maxime-lecoq commented 4 months ago

Bonjour, Ce bug sera corrigé par la nouvelle plateforme qui sera mise en place cet été en production. En vous remerciant, Maxime Lecoq PM JDMA