【问题标题】:FontAwesome with Grails <g:actionSubmit使用 Grails <g:actionSubmit 的 FontAwesome
【发布时间】:2013-07-13 19:09:21
【问题描述】:

我一直在尝试为我的保存、删除等按钮添加图标。我有大约五个按钮使用&lt;g:actionSubmit&gt; 标签来调用控制器中的动作来执行相应的功能。我的问题是 FontAwesome 和 bootstrap 的字形图标需要 &lt;i class="icon-***"&gt; 标签才能像这样使用:

<a href="http://google.com">
    <i class="icon-ok"></i> Google
</a>

在 grails 中,初始标记之间的这种标记格式是不可能的(至少在 actionSubmit 中是这样)。 value 属性是显示的字符串。有什么解决方法吗?请记住,我仍然需要将按钮操作映射回控制器,这就是为什么我在使用直接的 &lt;button&gt; 标记时遇到问题,就像为引导程序推荐的那样。

更新:

我在使用当前 2 个答案时遇到了很多问题。它们都用于添加图标,但我遇到了一些麻烦,我不得不修改很多东西来修复。我考虑了另一种解决方案,但在实施它时遇到了一些问题。我想使用 taglib 的基础作为下面的 actionSubmit 标记库来编写我自己的标记库:

def actionSubmit = {attrs ->
    attrs.tagName = "actionSubmit"
    if (!attrs.value) {
        throwTagError("Tag [$attrs.tagName] is missing required attribute [value]")
    }

    // add action and value
    def value = attrs.remove('value')
    def action = attrs.action ? attrs.remove('action') : value

    out << "<input type=\"submit\" name=\"_action_${action}\" value=\"${value}\" "

    // process remaining attributes
    outputAttributes(attrs)

    // close tag
    out << '/>'
}

我需要做的唯一改变就是让它能够接受

<i class="icon-ok"></i>

在a之间标记:

<g:actionSubmit ...> </g:actionSubmit>

有人对此有什么建议吗?

【问题讨论】:

  • 我建议创建一个您遇到的问题的帖子,保留此帖子,以便有相同问题的人可以使用它。请说明您的错误或意外行为的问题。只是说I'm getting some nuisances that I'm having to hack a lot of things up to fix 并不能帮助我们帮助你。

标签: grails twitter-bootstrap font-awesome glyphicons


【解决方案1】:

尝试将类名传递给remoteLink,它会创建一个使用Ajax 调用远程函数的链接,您可以将您的fontAwesome 类添加到其中。

<g:remoteLink  class="btn icon-ok" action="index"  >
    click (without i tag)
</g:remoteLink>

<g:remoteLink  action="index" >
       <i class="btn icon-ok">click (with i tag) </i>
</g:remoteLink>

这两种方法都应该有效。

【讨论】:

  • 更新了我对 Ajax 调用的回答,remoteLink 应该可以按您的意愿工作。
  • 这种方式也可以,除非你必须这样做: 保存它必须在标签之间。谢谢!
【解决方案2】:

不要使用 actionSubmit,只需使用 &lt;button&gt; 并提供如下链接/操作属性:

<button type="submit" class="btn">
  <i class="..."></i> Update
</button>

这里有一个更详细的例子

<button type="submit" class="btn btn-danger" name="_action_delete" value="Delete">
  <i class="..."></i> ${message(code: 'default.button.delete.label', default: 'Delete')}   
</button>

注意:actionSubmit 传递以下输入名称/值以进行更新、保存和删除

name="_action_update" //update
name="_action_update" //save
name="_action_delete" //delete

所以如果你的应用依赖于它们,你只需要这样做

【讨论】:

  • 每次我尝试模仿标签库时都会出现错误:sessionFactory.currentSession.flush() 我尝试的代码是:
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 2020-08-29
  • 2018-12-14
  • 2021-08-27
  • 2013-09-05
相关资源
最近更新 更多