qrcode-0.1 с Grails 2.0.1 - PullRequest
       1

qrcode-0.1 с Grails 2.0.1

0 голосов
/ 01 марта 2012

Смотри, это моя проблема: я обновил Grails 2.0.1 и теперь мне нужно сделать QR-код.Я установил плагин qrcode 0.1, но он не работает.Я использую тэг:

<qrcode:image text="${createPromoInstance.id}" />

, но, похоже, он ничего не делает.Я отладил с помощью Google Chrome и понял, что на вкладке «Элементы» тег меняется на <call></call> Я вчера спрашивал об этом, и кто-то сказал мне, что в плагине есть некоторые ошибки, которые не работают с Grails 2.0.1, и он дал мне несколько советов о том, что я могу сделать.Например, я отредактировал QRController следующим образом:

class QrcodeController{
   QRCodeRenderer qrcodeRenderer = new QRCodeRenderer()

   def index = {
       qrcodeRenderer.renderPng(response, request.getHeader("REFERER"), 300i)
   } //It doesn't have any change

   def url = {
      String uri = params.u
      String size = getSize(params)
      qrcodeRenderer.renderPng(response, uri, size.toInteger().intValue())
   } //it doesn't have any change

   protected String getSize(Map params){
      String size = params.s
      if(!size || size.matches(/\D\)) {size = "128"}
      return size
   } //I have added the "protected word"

   def text = {
      String content = params.t //it used to be params.text
      String size = getSize(params)
      qrcodeRenderer.renderPng(response, content, size.toInteger().intValue())
   }
}

и он сказал, что если я внесу эти изменения, это будет работать, но нет, это не так!Я пытаюсь представить код в пустом gsp, просто чтобы попробовать его так:

<%page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title><title>
<head>
<body>
   <div>
      <qrcode:image text="${createPromoInstance.id} />
   </div>
</body>
</html>

Как я понимаю, это должно работать, но это не так.Кто-нибудь знает, что я делаю не так?Я должен сделать что-то еще, чтобы получить отрендеренный QR-код?Спасибо за помощь!Йонатан!

1 Ответ

0 голосов
/ 02 марта 2012

Я нашел ответ ... Я просто оставлю его здесь, если это кому-нибудь понадобится.чтобы это работало, вам нужно внести некоторые изменения, как я писал ранее.

protected String getSize(Map params{ //it used to be String getSize(Map params)
   String size = params.s
   if (!size || size.matches(\/D/) {size = "128"}
   return size
}

и

def text = {
  String content = params.t //it used to be params.text
  String size = getSize(params)
  qrcodeRenderer.renderPng(response, content, size.toInteger().intValue())
}

, но это еще не все, вы должны изменить что-то еще в BuildConfig, напримерИтак:

//find the plugin call
plugins{
   //this is how my plugins call looks like, here you might see the calls of the plugins you have installed
   runtime: ":hibernate:$grailsVersion"
   runtime: ":jquery:1.7.1"
   runtime: ":resources:1.1.6"
   //and you gotta add this
   compile: ":qrcode:0.1"
   /*.
   .
   .*/
   build: ":tomcat:$grailsVersion"
 }

Затем вы должны перейти к плагину taglib "QRCodeTagLib" и заменить его:

def image = {attrs->
  def size = attrs.height?:attrs.width
  String text = attrs.text
  String src = createLink(controller:'qrcode',action:'text',params:[t:text,s:size])
  //it used to be like this
  /*def mkp = new groovy.xml.MarkupBuilder(out)
       mkp{
          img(alt:url, src:src)
       }
  */
  //and now it looks like this
  out <<"<img alt=\"${text}\" src=\"${src}\"/>"
}

и все, ваш QR-код будет обработан!

Надеюсь, это будет полезно всем!Йонатан !!П.Д .: Этот код не мой, кто-то помог мне на странице Grails на Facebook!Большое спасибо за Инго.:) ах!Другое дело ... Он добавил что-то в загрузчик, но у меня это не сработало, в загрузчик он вставил:

QRCode m = new QRCode()
m.save()

попробуй и дай мне знать, если это работает для тебя!:)

...