1

selectタグの変更に応じて、春のチェックボックスタグを動的にロードしています。しかし、それは次のようなエラーを生成します:

2012-08-31 09:27:14.829 org.springframework.web.servlet.tags.RequestContextAwareTag doStartTag: Neither BindingResult nor plain target object for bean name 'stockList' available as request attribute
W 2012-08-31 09:27:14.831 /stocks
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'stockList' available as request attribute
C 2012-08-31 09:27:14.832 Uncaught exception from servlet
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'stockList' available as request attribute

私のアプリエンジンサーバーログに。

私のコードは以下のとおりです

<link rel="stylesheet"
    href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script
    src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
<script type="text/javascript">
    function loadStocks() {
        var exchange = $("#stockExchange").val();
        var a;
        if (exchange = "BO") {
            a = "<form:checkbox path='stockList' value='INFY' label='Infosys' />"
                    + "<form:checkbox path='stockList' value='HINDALCO' label='HINDALCO' />"
                    + "<form:checkbox path='stockList' value='TTM' label='Tata Motors' />";
        } else if (exchange == "NS") {
            a = "<form:checkbox path='stockList' value='INFY' label='Infosys' />";
        }
        $("#kit").html(a);
    }
</script>
</head>
<body>
    <div data-role="page">
        <div data-role="content">
            <form:form method="POST" commandName="search">
                <ul data-role="listview">
                    <li data-role="fieldcontain">
                        <div id="kit">
                            <form:select path="stockExchange" onchange="loadStocks()"
                                id="stockExchange">
                                <form:option value="">Select Stock Exchange</form:option>
                                <form:option value="BO">BSE</form:option>
                                <form:option value="NS">NSE</form:option>
                            </form:select>
                        </div>
                    </li>

                    <li data-role="fieldcontain"><label>Select Stocks</label>
                        <div id="kit">
                            <form:checkbox path="stockList" value="INFY" label="Infosys" />
                            <form:checkbox path="stockList" value="HINDALCO" label="HINDALCO" />
                            <form:checkbox path="stockList" value="TTM" label="Tata Motors" />
                            <form:checkbox path="stockList" label="RELIANCE IND."
                                value="RELIANCE" />
                        </div></li>

                    <li data-role="fieldcontain"><input type="submit"
                        value="Submit" /></li>
                </ul>
            </form:form>
        </div>
        <!-- /content -->

    </div>
    <!-- /page -->

</body>
4

1 に答える 1

1

この JavaScript 関数は、この方法では機能しません。ブラウザで HTML ソース コードを確認すると、JSP のものとは異なることがわかります。<form:xxxx/>タグは、HTML をすばやく生成し、プロパティ バインディングを容易にするためのスプリング タグです。たとえば、次のようになります。

<form:checkbox path="stockList" value="INFY" label="Infosys" />

このプレーンな HTML にほぼ変換されます。

<input type="checkbox" id="stockList" name="stockList" value="INFY" label="Infosys" />

JavaScript 関数はクライアント側にあるため、Spring タグは変換されないため、Javascript 関数ではプレーンな html を使用する必要があります。そんな感じ:

function loadStocks() {
    var exchange = $("#stockExchange").val();
    var a;
    if (exchange = "BO") {
        a = "<input type='checkbox' id='stockList1' name='stockList' value='INFY' label='Infosys' />"
                + "<input type='checkbox' id='stockList2' name='stockList' value='HINDALCO' label='HINDALCO' />"
                + "<input type='checkbox' id='stockList3' name='stockList' value='TTM' label='Tata Motors' />";
    } else if (exchange == "NS") {
        a = "<input type='checkbox' id='stockList' name='stockList' value='INFY' label='Infosys' />";
    }
    $("#kit").html(a);
}

私が自分自身をよく説明したことを願っています。

PS:id入力がstockList1stockList2およびである理由はstockList3? ここで回答と関連情報を確認してください。

編集:

おそらくもっと簡単な別の解決策は、JS 関数で必要な入力を使用して JSP に隠し div を作成し、Spring でそれを変換させることです。後で、JS 関数で、Spring によって生成されたこれらの入力を JQuery で複製できます。この方法により、Spring が理解できるプレーンな HTML を作成する必要がなくなります。

于 2012-08-31T10:14:24.870 に答える