g:message 在 Javascript / jQuery 中带有参数的参数无法按预期工作
g:message with arguments inside Javascript / jQuery not working as expected
我遇到了一个问题,字符串参数被截断为g:message标签中的第一个字符(longs/integer似乎很好(。
最终,我发现我们并没有从Javascript中调用g:message语法正确,因此一些小的调整解决了这个问题。问题是 - 我不明白为什么前者不起作用。
谁能描述一下这里发生了什么?
jQuery("#myId").html("<g:message code='domain.message.path' args="${command?.foo?.name}"/>"); //incorrect, only displays first character of message
jQuery("#myId").html("${g.message(code: 'domain.message.path', args: [command?.foo?.name])}"); //correct, displays full string
我假设您将其呈现为 .gsp 页面的一部分? 事情是这样的。 在第一个中,您正在嵌套引号,基本上将 ${} 部分排除在字符串之外。 甚至Stackoverflow也能看出来;请注意该部分是不同的颜色:
jQuery("#myId").html("<g:message code='domain.message.path' args="${command?.foo?.name}"/>");
看看 html( 末尾的引号如何以 ${ 之前的引号结尾,留下 ${命令?。噗?。名称} 字符串之外的块? 如果 command.foo.name 是字符串"bob",那么当它呈现时,你会得到:
jQuery("#myId").html("<g:message code='domain.message.path' args="bob"/>");
你可能认为这看起来是正确的,但javascript会处理得很糟糕。
如果你对内部字符串使用单引号,就像你对'domain.message.path'所做的那样,它应该可以正常工作:
jQuery("#myId").html("<g:message code='domain.message.path' args='${command?.foo?.name}'/>");
相关文章:
- 无法使我的文本参数与我的查询一起工作
- 如何使参数在事件函数中工作
- 将图标作为参数传递不会;t工作-谷歌地图
- 添加第二个参数时,Javascript函数将停止工作
- 当名称空间在id参数之前声明时,Angular UI路由器停止工作
- 窗口clearInterval()在没有参数的情况下工作
- 无法获取用户 ID 路由参数以在反应路由器中继上工作
- 在 .before() 中多次使用相同的参数并不像我预期的那样工作
- JS .replace(str, str):如何获取参数 1 中的变量并全局工作
- 忽略服务工作进程请求中的查询参数
- JQuery 函数突然停止工作,转换 Javascript 参数时出错
- 猫鼬对象 ID 不作为函数中的参数工作
- JavaScript onclick 函数在参数为整数而不是字符串时工作
- 添加参数时调用javascript函数停止工作,这真的不大声吗
- 缺少参数 &&&||括号中的运算符,但仍在工作
- g:message 在 Javascript / jQuery 中带有参数的参数无法按预期工作
- JSON.stringify()工作不正常-第二个参数消失
- 为什么Selenium WebDriver不使用JavaScript等待时间参数工作
- 如何使Javascript定时器为变量参数工作
- 为什么不't将该方法作为参数工作传递