- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我是 Grails 的新手,所以这个问题的答案可能非常简单。我正在尝试在 gsp 中显示动态创建的图像。图像未存储在数据库中,它是在 Controller 中即时创建的。
我基本上拥有的是一个 gsp,它具有一种接受一组用户输入的形式 (requestGraph.gsp)。提交表单后,参数将发送到 Controller 中的 displayGraph 操作,该操作从完全在 Grails 之外的数据库中查询信息,并使用 JFreeChart 库创建图表。我想在 displayGraph.gsp 或类似的东西中显示此图像。
所以基本上在 requestGraph.gsp 中我有一个类似于以下的片段:
<g:form action="displayGraph">
<!-- ... bunch of labels and boxes -->
<g:submitButton name="displayGraph" value="Display Graph" />
</g:form>
在 Controller 中我有类似的东西:
def requestGraph = {}
def displayGraph = {
//... code that uses params to make an image byte array and assigns to var img
return [image : img]
}
在 displayGraph.gsp 中:
<body>
<h1>Graph Title</h1>
<!-- ??? How to dislpay image? -->
</body>
我尝试将图像直接传送到 displayGraph 操作中的输出流。这可行,但随后我失去了对 displayGraph.gsp 中所有页面格式的控制。
我发现的大多数教程都会创建一个专门的操作来将图像通过管道传输到输出流,然后使用标签调用该操作。问题是我的图像没有存储在数据库中,我看不到通过图像字节数组(甚至表单参数)来创建/渲染图像的方法。有人可以帮我吗?谢谢。
最佳答案
如果将字节写入输出流,则可以将 Controller /操作视为 GSP 中的图像源。这是一个未经测试的快速示例:
// controller action
def displayGraph = {
def img // byte array
//...
response.setHeader('Content-length', img.length)
response.contentType = 'image/png' // or the appropriate image content type
response.outputStream << img
response.outputStream.flush()
}
然后您可以在 src
中访问您的图像的 <img>
像这样的标签:
<img src="${createLink(controller: 'myController', action: 'displayGraph')}"/>
更新:
再次阅读您的问题后,这可能有效也可能无效 - 看起来您可能将图表显示为表单提交的结果。这仅在您将状态存储在服务器某处时才有效(而不是仅从提交表单的一个请求中获取状态)。如果您确实在服务器上存储了足够的状态来生成图形,那么您必须向 Controller 提供一些额外的参数以获得正确的图像,例如src="${g.link(controller: 'myController', action: 'displayGraph', params: ['id': 1234])}"
,其中 id 是您检索图形状态的方式。
关于html - Grails:在 gsp 中显示创建的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502278/
假设我有以下类(class) class Genre { static hasMany=[author:Author] } class Author{ static hasMany=[
我需要创建一个自定义gsp,其域模型设计如下 class Question { SortedSet choiceCollection; static hasMany = [choice
我想摆脱 create.gsp 和 save.gsp 并将所有内容都放在同一页面上。 我所做的是将所有这些字段移到 list.gsp 中列表的第一行 但现在我不知道如何将它与其余数据连接起来并使其工作
我在 weblogic 中使用 grails,需要更改展开的部署文件夹中的类文件。但这个类实际上是一个gsp编译的文件。 那么,问题是:GSP 文件 (.class) 在 war 中处于什么位置? 注
我是 Grails 新手。我正在尝试为站点中的每个产品显示图像缩略图,如下所示: /* 1 */ 这里的问题是我想在数据库中保存图片链接,并通过以下方式获取链接: ${fieldValue(bean:
希望我的问题非常简单。 我有两个不同的域以及相应的 Controller / View 文件夹等。 我想从第一个 _form.gsp 调用第二个 _form.gsp(在 g:each 中,因为会有多个
从gsp页(或类型库)是否可以中止html页的生成并回调到 Controller 方法以输出403 header ? 我们有一组用于管理页面的脚手架页面,并对其进行了修改,以测试访问该页面的用户是否具
这是在我的gsp中,它不起作用 我认为主要原因是我嵌套$ {}。我该怎么做。 $ {variable}是从 Controller 传递的字符串。 谢谢! 最佳答案 您不需要嵌套的$ {} 应该管用
当您编译 grails war 时,我知道 .groovy 代码被编译为字节码类文件,但我不明白容器(例如 tomcat)如何在请求 GSP 时知道如何编译它们。容器了解 GSP 吗?安装在服务器上的
在 GSP 中,是否可以创建到另一个 GSP 的直接链接?我知道我可以使用: 并在 UserController 中定义 foo 操作以仅显示相应的 GSP class UserController
我有一个域名 class Node { String nodeId String label Node parent } 在 GSP 页面中,我想从根开始并打印其所有
我有一个 grails 应用程序,在执行加载某些数据表的操作后,我单击数据表上的链接,重新执行相同的操作并再次加载相同的页面 - 所以,当它第二次加载时(单击链接后)看起来浏览器没有处理我页面上的任何
我创建了一个本地驱动器中的word文档,应该使用grails gsp页面在浏览器中打开它。 用于创建是创建链接还是使用脚本的选项有哪些。 在此先感谢您的帮助。 最佳答案 要打开或下载,有很多选择 是使
我想将域类中设置的所有值检索到客户端(gsp或Javascript) 假设我有一个名为GeneralSetting的域类。我使用的方法有效,但并非完全符合我的要求。 gsp文件 s console.
我是grails的新手,正在尝试访问索引页面。删除grails的默认主页后,出现以下错误 404 App1 / WEB-INF / grails-app / views / index.jsp des
在我的GSP中,我有一个选择标签 产生HTML -Select- USA UK 但是我需要从1开始有一个整数值(即,美国将具有值1和英国2) 我该怎么做 最佳答案 一种解决方案是,在将列表返
所以我想在一定时间后调用某个 gsp def index() { //code here //after 30secs r
我们正在使用 run-app 运行 grails 项目。第一次请求页面时,会出现延迟。然而,此后每次页面加载速度都会很快。 我能想到的最明显的解释是该页面尚未编译。有没有办法诱导编译或其他导致延迟的原
我有以下代码 Cart is Empty ${cart.size()} items 但是第一次访问该网站时(当购物车为空时)我收到“无法在空对象上调用方法 isEmpty(
我的域中有一个名为 status 的属性,它是 String 类型,可以具有两个值之一 Applied 、 NotApplied 我有两个复选框来输入该值。在我的编辑页面中,我想显示这两个复选框。 如
我是一名优秀的程序员,十分优秀!