SpringBoot项目中列表中生成二维码
Maven依赖
<!-- 二维码 -->
<dependency>
<groupId>net.glxn.qrgen</groupId>
<artifactId>javase</artifactId>
<version>2.0</version>
</dependency>
页面代码
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
rownumbers: true,//序号是否展示
rownumWidth:50,//序号列的宽度,单位:px,
columnModel: [
{header:'${text('耳标号')}', name:'earno', index:'a.earno', width:100, align:"center",sortable:false,autowidth:true,formatter: function(val, obj, row, act){
return "<img src='${path}/qrcode/getPng?id="+row.id+"'/>";
}},
{header:'${text('耳标号')}', name:'earno', index:'a.earno', width:100, align:"center",sortable:false,autowidth:true},
{header:'${text('任务名称')}', name:'jnhgTask.name', index:'jnhgTask.name', width:200, align:"center",sortable:false,autowidth:true},
{header:'${text('任务编号')}', name:'jnhgTask.no', index:'jnhgTask.no', width:200, align:"center",sortable:false,autowidth:true},
{header:'${text('登轮检疫任务')}', name:'jnhgShip.shipname', index:'jnhgShip.shipname', width:200, align:"center",sortable:false,autowidth:true},
{header:'${text('运输任务')}', name:'jnhgTransplan.taskname', index:'jnhgTransplan.taskname', width:150, align:"center",sortable:false,autowidth:true},
{header:'${text('操作')}', name:'actions', align:"center", width:120, sortable:false, title:false, formatter: function(val, obj, row, act){
var actions = [];
actions.push('<a href="javascript:void(0);" openDialog("'+row.id+'") title="${text('查看详细信息')}"><i class="icon-magnifier"></i></a> ');
return actions.join('');
}}
],
// 加载成功后执行事件
ajaxSuccess: function(data){
console.log(data);
}
});
后端请求代码
@RequestMapping("/qrcode")
@Controller
public class QrcodeController extends BaseController {
@RequestMapping("/getPng")
public void getPng(String id,HttpServletRequest request,HttpServletResponse response) throws IOException {
String url = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/qrcode/detail?id="+id;
ByteArrayOutputStream out = QRCode.from(url).to(ImageType.PNG).stream();
response.setContentType("image/png");
response.setContentLength(out.size());
OutputStream os = response.getOutputStream();
os.write(out.toByteArray());
os.flush();
os.close();
}
}
效果图
注意点:
如果手机开流量访问本地项目生成的二维码,二维码生成中是一串链接地址,注意你的手机要和服务器的处于同一网络才可以,不然没法访问。当然了,项目发布后在外网访问自然是没问题的。