看看这是我的问题:我已经更新到Grails 2.0.1,现在我必须制作一个二维码。我已经安装了qrcode插件0.1,但它无法正常工作。我正在使用标签:
<qrcode:image text="${createPromoInstance.id}" />
但它似乎没有做任何事情。我使用谷歌浏览器调试,我意识到在“元素”标签中,标签正在更改<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>
据我所知它应该有效,但事实并非如此。有谁知道我做错了什么?我必须做其他事情才能获得渲染的二维码? 谢谢您的帮助! 了Jonatan!
答案 0 :(得分:0)
我找到了答案......如果有人需要,我会把它留在这里。 为了实现这个目标,你需要像我之前写的那样做一些改变。
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码将被渲染!
希望它对任何人都有用! !!了Jonatan PD:这个代码的功劳不是我的,有人在grails facebook页面上帮助了我!非常感谢Ingo。 :) 啊!其他的事情......他在引导程序中添加了一些东西,但它对我没用,在他的引导程序中:
QRCode m = new QRCode()
m.save()
尝试一下,让我知道这是否适合你! :)