1

以下のようなJSPのコードがあります。

<c:iterate name="list" id="payment" index="idx">
<tr class="gRowEven"
  _paid="<c:write name="payment" property="paid"/>">

今私の問題は、変数に基づいてコントローラーのメソッドを呼び出したいということです_paid。私はすることができますrequest.setAttribute("_paid", _paid)

私はそれがうまくいくと思います。しかし、私はそのようにするべきではありません。それで私はそれをする他の方法があるかどうか疑問に思いましたか?

4

1 に答える 1

5

その値を非表示の入力フィールドに渡すことができます(フォーム送信時)

<form action='your controller' method='POST'>
    ...
    <input type='hidden' id='newfield' name='newfield' value=''/>
</form>

次に、コントローラーはその値を取得できます(request.getParameter('newfield')、またはMVCフレームワークが提供するメソッドを使用)


または、コントローラーがGETリクエストを受け取った場合は、URLに追加するだけです。


ところで、

request.setAttribute("_paid",_paid);

おそらくあなたのために働くことはありません。この呼び出しは、ページが読み込まれたときにのみ実行され、ページを送信したときには実行されないためです。また、ページを送信すると、新しいリクエストが追加されます


編集:(これは、「その値を(フォーム送信時に)非表示の入力フィールドに渡す」という意味です)

<script type='text/javascript'>
    function updateHiddenField() {
        var trPaid = document.getElementById('trPaid'); //assume tr field's id is trPaid
        //if tr doesn't have an id, you can use other dom selector function to get tr 
        //element, but adding an id make things easier
        var value = trPaid.getAttribute('_paid');
        document.getElementById('newfield').value = value;
        document.getElementById('form1').submit();
        return false;
    }
</script>

<form action='your controller' id='form1' method='POST'  
        onsubmit='javascript:updateHiddenField();'>
    ...
</form>

次に、_paidの値がnewfieldパラメーターのリクエストで渡されます


そして、SpringMVCを使用しているときにパラメーターを取得する方法は次のとおりです

@Controller
@RequestMapping("/blah")
public class MyController {

    @RequestMapping(value="/morepath" method = RequestMethod.POST)
    public ModelAndView test(@RequestParam("newfield") int paid) {
        logger.debug("here's the value of paid: " + paid);
    }
 ...
于 2012-08-16T16:58:17.320 に答える