0

Spring と YUI Data テーブルに関するプロジェクトを行っています。

コントローラーを使用して 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 に移動すると、定義した列を含むデータ テーブルが表示されますが、コンテンツには「データ エラー」が表示されます。

誰かがこれで私を助けてくれますか?

4

1 に答える 1

0

そして、データは実際にどのように見えますか? ブラウザが受け取るのは何ですか?JavaScript 以外のコードを理解できません。理解できたとしても、コードに何らかのエラーがあり、クライアントが解析できないエラー メッセージがサーバーからスローされることがあります。そのため、ブラウザーでデバッガーを開き、ブラウザーが実際に取得する内容を確認してください。

于 2013-07-09T05:44:51.453 に答える