【问题标题】:Data error while tring to display a YUI DataTable in Spring MVC在 Spring MVC 中显示 YUI DataTable 时出现数据错误
【发布时间】:2013-07-06 06:05:45
【问题描述】:

我正在做一个关于 Spring 和 YUI 数据表的项目。

我正在使用控制器返回 JSON 字符串,并且在视图中将使用 JSON 字符串作为数据源来生成数据表。但不知何故,数据表显示“数据错误”。

这是我的控制器的代码:

@RequestMapping(value = "/report") public ModelAndView getViolationReport(Long violation_num){

        ComplLog origViolation = null;
        //HashMap<Long, BRMap> logdetailsmap = new HashMap<Long, BRMap>();

        Map<String,String> map = new HashMap<String, String>();

        map.put("col1", "value1");
        map.put("col2", "value2");
        map.put("col3", "value3");
        map.put("col4", "value4");
        map.put("col5", "value5");

        List<Map<String,String>> list = new ArrayList<Map<String,String>>();
        list.add(map);

        ModelAndView mav = new ModelAndView();

        mav.addObject("detailList", list);
        mav.setViewName("GetViolationReport");      //return the model to the GetViolationReport.jsp          
        return mav;
}

这是我的 index.jsp 文件:

<% response.sendRedirect("/app/ViolationReportService.app"); %>

这是我的观点,GetViolationReport.jsp:

<body class="yui-skin-sam" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
<div id="scroller" class="scrollPane">
    <c:out value = "${detailList}" />    
</div>
<div id="basic"></div> 
</body>
<script type="text/javascript">
YAHOO.util.Event.addListener(window, "load", function() {
YAHOO.example.Basic = function() {
    var myColumnDefs = [
        {key:"col1", sortable:true, resizeable:true},
        {key:"col2", sortable:true, resizeable:true},
        {key:"col3", sortable:true, resizeable:true},
        {key:"col4", sortable:true, resizeable:true},
        {key:"col5", sortable:true, resizeable:true}

    ];
 var myDataSource = new YAHOO.util.XHRDataSource("app/violationreport/report");
    myDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
    myDataSource.responseSchema = {
        metaFields : {
            totalRecords : "detailmap.totalRecordsFound",
            recordsReturned : "detailmap.totalRecordsFound",
            invocationStatus : "invocationStatus",
            startIndex : 0,
            executionStatusMessage : "executionStatusMessage"
        },
        resultsList : "detailList",
        fields : [ "col1","col2","col3","col4","col5" ] 
    }
var myDataTable = new YAHOO.widget.DataTable("basic",
            myColumnDefs, myDataSource, {initialLoad: true, caption:"DataTable Caption"});

    return {
        oDS: myDataSource,
        oDT: myDataTable
    };
 }();
});
</script>

而actoolkit-config.xml是这样的:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="favorParameter" value="true" /> 
    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json" /> 
            <entry key="html" value="text/html" /> 
            <entry key="plain" value="text/plain" /> 
            <entry key="octet" value="application/octet-stream" /> 
        </map>
    </property>
    <property name="viewResolvers">
        <list>
            <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
            <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
                <property name="viewClass"
                    value="org.springframework.web.servlet.view.JstlView" />
                <property name="prefix" value="/WEB-INF/jsp/" />
                <property name="suffix" value=".jsp" />
            </bean>
        </list>
    </property>

    <property name="defaultViews">
        <list>
            <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />                   
        </list>
    </property>
    <property name="defaultContentType" value="application/json" /> 
</bean>

控制台没有错误,但是当我转到应该生成数据表的 url 时,它显示了一个数据表,其中包含我定义的列,但内容显示“数据错误”。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java javascript spring yui


    【解决方案1】:

    数据实际上是什么样的?浏览器接收到的是什么?我不理解您的非 JavaScript 代码,即使我理解了,有时也会发生代码中存在一些错误并且服务器抛出客户端无法解析的错误消息。所以,在浏览器中打开调试器,看看浏览器实际得到了什么。

    【讨论】:

    • 现在我可以获取要显示的数据,但是我将请求映射更改为@RequestMapping(value = "/report/{violation_num}"),所以如果我希望数据表显示数据我从数据库中获取,我必须先去 http://*****/app/violationreport/report/123124 获取 JSON 数据,然后去 *****/violationreportservice/ 调用数据表得到它显示...有什么方法可以让我去 http://*****/app/violationreport/report/123124 然后将数据直接显示在数据表中?
    • 我不知道你在说什么。这可以是 YUI 问题或 Spring 问题。到目前为止,我们还不能说。决定它的一种方法是让您显示浏览器实际获得的内容。如果正确,则为 YUI 问题,如果错误,则为 Spring 问题。
    • 我终于让它工作了,这实际上是因为我在数据源中写了一个错误的 url。我将其更改为“http://....../**.json”,然后我得到要显示的数据表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多