我对Grails非常陌生,所以这个问题可能很简单。我试图在gsp中显示一个动态创建的图像,该图像并没有存储在数据库中,而是在Controller中实时生成。
我的一个gsp页面(requestGraph.gsp)包含一个表单,其中用户输入一组参数。提交表单后,这些参数将被发送到控制器中的displayGraph action,该action从完全独立于Grails的数据库中查询信息,并使用JFreeChart库创建图表。我希望将此图像显示在displayGraph.gsp或类似的页面中。
因此,基本上在requestGraph.gsp中,我有一个类似于以下代码片段:
<g:form action="displayGraph">
<!-- ... bunch of labels and boxes -->
<g:submitButton name="displayGraph" value="Display Graph" />
</g:form>
在控制器中我有这样一段:
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页面格式的能力。
我发现大多数教程都会创建一个专门的操作来将图像传输到输出流,然后使用 <img>
标签调用该操作。问题是,我的图像不存储在数据库中,我看不到传递图像字节数组(甚至表单参数)以创建/呈现图像的方法。有人能帮帮我吗?谢谢。
response.outputStream << img
不起作用。我不得不使用response.outputStream.write(img)
- 只是提醒其他遇到此问题的人注意一下。 - andy mccullough