把字符串传递给jsp,什么错了?

时间:2012-12-10 12:36:57

标签: spring jsp jstl cytoscape-web

在Controller中,我有一个处理程序方法,应该将字符串传递给名为searchResultGraph.jsp的jsp

@RequestMapping(value = PATHELEM + "/searchGraph")
    public String handleGraph(Model model) {
        String write = writer.getWriteString();
        model.addAttribute("write", write);
        System.out.println(write);
        return PATHELEM + "/searchResultGraph";
    }

jsp看起来像这样:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="core"%>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Graph View</title>
        <script type="text/javascript" src="<c:url value="/resources/js/json2.min.js" />"></script> <!-- ${pageContext.request.contextPath}/WebContent/WEB-INF/views/ -->
        <script type="text/javascript" src="<c:url value="/resources/js/cytoscapeweb.min.js" />"></script>
        <script type="text/javascript" src="<c:url value="/resources/js/AC_OETags.min.js" />"></script>


        <script language="JavaScript">
            window.onload=function() {
                        // network data could alternatively be grabbed via ajax
                 var xml = '${write}';

                        // init and draw
                        // initialization options
                            var options = {
                                swfPath: "CytoscapeWeb",
                                flashInstallerPath: "playerProductInstall"
                            };

                            var vis = new org.cytoscapeweb.Visualization("cytoscapeweb", options);

                            var draw_options = {
                                // your data goes here
                                network: xml,

                                // show edge labels too
                                edgeLabelsVisible: false,

                                edgeTooltipsEnabled:true,

                                // let's try another layout
                                layout: "circle",

                                // hide pan zoom
                                panZoomControlVisible: true
                            };

                            vis.draw(draw_options);

                        };
        </script>

        <style>
            /* The Cytoscape Web container must have its dimensions set. */
            html, body { height: 100%; width: 100%; padding: 0; margin: 0; }
            #cytoscapeweb { width: 100%; height: 100%; }
        </style>
    </head>
    <body>
        <h1>The Graph</h1>
        <h1>${write}</h1>
        <div id="cytoscapeweb">
             Cytoscape Web will replace the contents of this div with your graph.
             ${write}
        </div>
    </body>
</html>

但是当我尝试拨打${write}时,没有显示任何内容。我的方法中缺少什么东西吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

检查你是否有一个名为getWriteString()的方法;在你的bean类中,如果没有,则创建一个类名称在控制器中编写并实例化一个名为write的对象,然后将一些字符串传递给它,并将其添加到模型中,以便由控制器返回,

Write write = new Write();
write.getWriteString();

答案 1 :(得分:0)

好的,我找到了解决方案:

options-tag中的链接也必须是相对链接!

所以不是这个

var options = {
                swfPath: "CytoscapeWeb",
                flashInstallerPath: "playerProductInstall"
              };

我不得不写这个:

var options = {
                 swfPath: "<c:url value="/resources/js/CytoscapeWeb" />",
                 flashInstallerPath: "<c:url value="resources/js/playerProductInstall" />"
              };