Можно ли переписать поведение методов ** CreateLink ** и ** CreateLinkTo **? - PullRequest
2 голосов
/ 28 октября 2009

Возможно переписать поведение методов CreateLink и CreateLinkTo ?

Ответы [ 3 ]

2 голосов
/ 29 октября 2009

Вы можете использовать метапрограммирование для замены замыкания в ApplicationTaglib.

ApplicationTagLib.metaClass.getCreateLink = {->
  return {attrs->
         // your code here
  }
}

Я никогда не пробовал, но это может сработать:)

1 голос
/ 04 марта 2010

Это немного поздно, но приведенные выше решения не сработали для меня. Я смог успешно сделать это, хотя:

public class MyTagLib extends ApplicationTagLib {

  def oldResource

  public MyTagLib() {
    // save the old 'resource' value
    oldResource = resource;
    resource = staticResource;
  }

  def staticResource = { attrs ->
    // dork with whatever you want here ...
    // ...
    out << oldResource(attrs);
 }
}

вы в основном расширяете оригинальный тег lib. Поскольку тег 'resource' является свойством объекта (а не метода), я не думаю, что вы можете переопределить его. Вместо этого просто сохраните исходное значение и вызовите его после внесения изменений в запрос тега.

1 голос
/ 29 октября 2009

Все, что вам нужно сделать, это создать собственную taglib и определить теги самостоятельно, т.е.

class MyTabLib {
  def createLink = {attrs, body ->
   .... etc ....
  }

  def createLinkTo = {attrs, body ->
   .... etc ....
  }

}

Grails будет первым использовать ваш taglib.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...